0
我试图实现我自己的Clojure'或'宏(称为'我 - 或')。到目前为止,我已经有了:递归实现或在Clojure
(defmacro my-or
[& args]
(let [[x xs] (seq args)]
`(if ~x ~x (my-or ~xs))))
然而,调用这个函数,例如当:
(my-or false 4 3)
这导致的StackOverflowError。我很欣赏我所写的是递归的,但究竟是什么导致错误的函数呢?顺便提一下,我还看了一下clojure.core库中的'or'的官方实现,所以我意识到可以使用的解决方案。
(?也许尾递归是与此有关不确定)
感谢
丹尼尔