Clojure宏不需要它旁边的空间

时间:2013-05-04 18:51:44

标签: macros clojure lisp

尝试创建一个Haskell的lambda语法的宏形式,除了最后一个调整之外,我非常接近,/(它应该是\,但不能发牢骚..)需要一个空格旁边,有吗任何方式使它,所以我的宏不需要它和它的第一个参数之间的空间?

例如:

(reduce (/x y -> x y) [1 2 3])

而不是:

(reduce (/ x y -> x y) [1 2 3])

我怀疑这是不可能的,但唯一可以肯定的方法就是询问知道的人,这是什么意思?

2 个答案:

答案 0 :(得分:5)

没有。宏不能改变语言的词法语法。这需要读取宏,Clojure没有。

答案 1 :(得分:2)

不,但是如果你想做一些更雄心勃勃的事情,你可以定义另一个你整个命名空间包含的宏with-haskell-lambdas。那个宏可以查看它下面的所有表格,例如tree-seq,找到/x形式的符号,并将其替换为/ x