Добавление элементов в список / последовательность в Clojure
должен быть простой способ сделать это, и я, очевидно, упускаю его :/
Как вы добавляете элементы в списокпоследовательность (не ясно, в чем разница) в clojure?
Я пробовал следующие:
Clojure> (add [1 2 3])
java.lang.RuntimeException: Unable to resolve symbol: add in this context
Clojure> (+ [1 2 3])
java.lang.ClassCastException: Cannot cast clojure.lang.PersistentVector to java.lang.Number
Clojure> (apply merge-with + [1 2 3])
java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Long
Clojure> (add-items [1 2 3])
java.lang.RuntimeException: Unable to resolve symbol: add-items in this context
1 ответов
(+ 1 2 3)
...будут делать это. Решение @ Nathan Hughes:
(apply + [1 2 3])
...если у вас есть ссылка на последовательность, а не определять его в линию, например:
(def s [1 2 3])
; (+ s) CastClassException
(apply + s) ; 6
как @4e6 отмечает, reduce
работает:
(reduce + s) ; 6
что лучше? мнения разделились.