我只是在 REPL 建立一个函数并遇到了这个问题。
我定义了一个符号 S 并给它一个值:
(def S '(FRUIT COLORS (YELLOW GREEN) SKIN (EDIBLE INEDIBLE)))
最终,我想要一个函数,它采用参数列表中的第一个条目以及任何和所有后续参数对并将它们应用于第一个条目。我的编码从来没有那么远。我想使用循环/递归构造(我应该吗?),这是我在 REPL 中的进展:
(loop [KV# (rest S)]
(if (empty? KV#)
nil
(
(pprint S, (first KV#), (second KV#))
(recur (rest (rest KV#)))
)
)
)
我得到一个“只能从尾部位置重复”编译器错误。
在查看了这方面的所有内容(包括 Stack Overflow 中的 7 或 8 篇文章)之后,我只能问:嗯?!
我是新来的。如果 recur 不在尾部位置,有人可以向我解释为什么吗?
与“if”语句语法有关吗?啊!Clojure 不适合弱者!谢谢你。