我正在学习clojure并且一直在使用4clojure.com来改善.我刚刚完成#19,但似乎我没有像作者所预料的那样完成它 - 就像我可能不知何故错过了这一点.

鉴于您不能使用最后一个函数的约束,这似乎是一个合理的解决方案吗?
#(.get %(- (count %) 1))
Run Code Online (Sandbox Code Playgroud)
小智 41
如果您打算使用:
#(first (reverse %))
Run Code Online (Sandbox Code Playgroud)
你也可以用"comp"组成函数:
(comp first reverse)
Run Code Online (Sandbox Code Playgroud)
这可能是一个更惯用,更容易阅读.关于"反向"不懒惰的相同警告适用于此.
man*_*nge 26
这是一个有效的解决方案.我会#(nth % (dec (count %)))更喜欢惯用,但它们在功能上是等同的.
Ale*_*art 18
这是一种纯粹的递归方法,不依赖于计数:
(defn end [[n & more]]
(if more
(recur more)
n))
是的,这是一个合理的解决方案.但有几点:
使用该函数dec而不是减去一个函数更加惯用.
#(.get % (dec (count %)))
在4clojure上关注其他人.这样,您可以在解决问题后看到问题的解决方案.我正在通过4clojure自己工作,发现学习语言非常有用,特别是某些习语.
我想到的第一个解决方案就是反转列表并采用第一个元素.
#(first (reverse %))