2017-01-29 30 views
0

我想預處理代碼從另一種語言,像這樣的預處理:國外的源代碼使用Clojure

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

基本上,什麼是尖括號會被執行並且發出字符串輸出插入的字符串。我看到有HTML模板庫。我想知道是否可以像Clojure宏那樣獲得。我可能並不知道像FleetSelmer這樣的模板庫提供的好處,並且需要一些指導。

在上面的例子中,我想創建多個表達式的組合:

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

最終,我確實需要跟蹤的外語變量。爲此,預處理可能是錯誤的方法,相反,我最好做完整的代碼生成。

P.S .:對於那些你想知道我試圖擴展馬爾科夫邏輯網絡(MLN)的語言。

回答

1

Clojure宏將不會幫助你直接與此。宏仍然需要表達式基本上是Clojure可讀的語法,調用形式爲(macro arg1 arg...)

其他Lisp允許您使用閱讀器宏擴展可讀語法,但Clojure做出了不允許它們的決定。

+0

Clojure世界很小。那天我在你的博客上:) – m33lky