我想从其他语言中预处理代码,如下所示:
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。:对于那些想知道我试图扩展Markov Logic Networks(MLN)语言的人。
答案 0 :(得分:1)
Clojure宏不会直接帮助您。宏仍然要求表达式基本上是Clojure可读语法,并且调用(macro arg1 arg...)
形式。
其他Lisps允许您使用读者宏扩展可读语法,但Clojure决定不允许它们。