使用Clojure进行外源代码预处理

时间:2017-01-29 21:00:41

标签: clojure templating

我想从其他语言中预处理代码,如下所示:

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

基本上,执行尖括号内部的内容并将发出的字符串输出插入到字符串中。我看到有HTML模板库。我想知道我是否可以使用像Clojure宏这样的东西。我可能不知道FleetSelmer等模板库提供的好处,需要一些指导。

在上面的例子中,我想创建更多表达式的组合:

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

最终,我确实需要跟踪外语的变量。为此目的,预处理可能是错误的方法,相反,我最好完成代码生成。

P.S。:对于那些想知道我试图扩展Markov Logic Networks(MLN)语言的人。

1 个答案:

答案 0 :(得分:1)

Clojure宏不会直接帮助您。宏仍然要求表达式基本上是Clojure可读语法,并且调用(macro arg1 arg...)形式。

其他Lisps允许您使用读者宏扩展可读语法,但Clojure决定不允许它们。