什么是"尾部位置"的精确定义,以便在clojure中重复出现.我认为这将是循环S表达式中的最后一项,但在下面的例子中,在我看来,以(if ...)开头的S-Expression处于尾部位置即([LOOP KEYWORD] [BINDING STATMENTS] [IF声明]).
(= __
(loop [x 5
result []]
(if (> x 0)
(recur (dec x) (conj result (+ 2 x)))
result)))
Run Code Online (Sandbox Code Playgroud)
代码取自http://www.4clojure.com/problem/68
密切相关的问题:如何在Clojure中调用if条件中的recur?
我正在解决一个4Clojure练习,这个练习要求你建立自己的插入功能.我的答案如下:
(fn my-interpose
([separator input] (my-interpose separator input nil))
([separator input result]
(if
(empty? input)
(reverse (rest result))
(my-interpose separator (rest input) (cons separator (cons (first input) result))))))
Run Code Online (Sandbox Code Playgroud)
在读Clojure书时,我正在做这些练习来学习语言.我想知道有关我的语言经验的人的代码的意见.我可以避免反向通话吗?是否有任何惯例我很难用这种代码打破?
clojure ×2