Próbuję rozwiązać ćwiczenie z sekwencją z ćwiczeniem pod numerem 4clojure.com. Ćwiczenie polega na zliczaniu liczby elementów w kolekcji bez użycia funkcji count
.Jak mogę wywołać recur w warunkowym w Clojure?
Pomyślałem, że mogę to zrobić poprzez rekursję, przez użycie rest
. Jeśli to, co otrzymam, nie jest puste, zwracam 1 + recur on the sequence rest returned
. Problem polega na tym, że w końcu się
java.security.PrivilegedActionException: java.lang.UnsupportedOperationException:
Can only recur from tail position
chociaż Dzwonię recur
jako ostatniej deklaracji.
(fn [coll] (let [tail (rest coll)]
(if (empty tail)
1
(+ 1 (recur tail)))))
Czy czegoś brakuje?