Ich möchte eine Funktion schreiben, um die Summe aller durch 3 teilbaren Zahlen in einer gegebenen Liste zurückzugeben. Ich weiß nicht, wie man auf die Größe einer Liste passt. Ich bekomme eine Null-Zeiger-Ausnahme, wenn ich den folgenden Code ausführe.Wie kann ich die Mustergröße in clojure anpassen?
(defn sum3 [coll]
(reduce (fn [sum el]
(if (zero? (mod el 3))
(+ sum el)
sum)) 0 coll))
Beachten Sie die Verwendung von zero?
: mit reduce
Ich versuche, dies mit ersten Prinzipien zu tun, statt loop
map
und reduce
mit
(defn sum3
[[head & tail]]
(if (= (mod head 3) 0)
(+ head (sum3 tail))
(sum3 tail))
[[head]]
(if (= (mod head 3) 0)
head
0))
(defn -main
"I don't do a whole lot ... yet."
[& args]
(println (sum3 [1 2 3])))
'(sum3())' ist ein Problem für diese Implementierung. – amalloy