尝试创建一个Haskell的lambda语法的宏形式,除了最后一个调整之外,我非常接近,/(它应该是\,但不能发牢骚..)需要一个空格旁边,有吗任何方式使它,所以我的宏不需要它和它的第一个参数之间的空间?
例如:
(reduce (/x y -> x y) [1 2 3])
而不是:
(reduce (/ x y -> x y) [1 2 3])
我怀疑这是不可能的,但唯一可以肯定的方法就是询问知道的人,这是什么意思?
答案 0 :(得分:5)
没有。宏不能改变语言的词法语法。这需要读取宏,Clojure没有。
答案 1 :(得分:2)
不,但是如果你想做一些更雄心勃勃的事情,你可以定义另一个你整个命名空间包含的宏with-haskell-lambdas
。那个宏可以查看它下面的所有表格,例如tree-seq,找到/x
形式的符号,并将其替换为/ x
。