リストを再帰的に逆にしようとしていますが Can only recur from tail position
、実行中です。これは正確には何を意味し、コードが機能するようにどのように改善できますか?
(defn recursive-reverse [coll]
(loop [coll coll]
(if (< (count coll) 2) '(coll)
(conj (first coll) (recur (rest coll)))
)))
編集
Oscar のソリューションの出力。リストでは機能しますが、ベクトルでは機能しませんか?
user=> (= (recursive-reverse [1 2 3 4 5]) (recursive-reverse '(1 2 3 4 5)))
false
user=> (= '(1 2 3 4 5) [1 2 3 4 5])
true
user=> (recursive-reverse [1 2 3 4 5])
[1 2 3 4 5]
user=> (recursive-reverse '(1 2 3 4 5))
(5 4 3 2 1)