2017-01-29 8 views
0

Я хотел бы предобработки код с другого языка, как так:иностранный исходный код предварительной обработки с Clojure

Predicate1(X) => Predicate2(Y) 
<% (clojure-func "Predicate3" "X" "Y") %> 

В принципе, что внутри угловых скобок запускается на выполнение и излучаемый строка вывода вставляется в строку. Я вижу, что существуют библиотеки шаблонов HTML. Мне интересно, могу ли я обойти что-то вроде макросов Clojure. Возможно, я не знаю преимуществ, предоставляемых библиотекой шаблонов, например Fleet или Selmer, и вам нужно руководствоваться.

В приведенном выше примере я хочу, чтобы создать комбинации нескольких выражений:

Predicate3(X_a) => Predicate2(Y) 
Predicate3(X_b) => Predicate2(Y) 

В конце концов, мне нужно следить за переменными иностранного языка. Для этой цели предварительная обработка может быть неправильным подходом, и вместо этого я лучше выполняю полное генерирование кода.

P.S .: Для тех из вас, кто интересуется, я пытаюсь расширить язык Марковских логических сетей (MLN).

ответ

1

Clojure macros не поможет вам напрямую с этим. Макросы по-прежнему требуют, чтобы выражения были в основном Clojure читабельном синтаксисе с вызовами формы (macro arg1 arg...).

Другие Lisps позволяют расширять читаемый синтаксис с помощью макросов считывателя, но Clojure принял решение не допускать их.

+0

Clojure world is small. Я был в вашем блоге на днях :) – m33lky