Почему применение Clojure трактует векторы иначе, чем списки? - PullRequest
1 голос
/ 28 января 2012

Мне любопытно, почему первый аргумент, который нужно применить (а также уменьшить), влияет на поведение функции, как показано в следующем фрагменте кода.

user=> (apply conj '() [1 2 3])
(3 2 1)
user=> (apply conj [] [1 2 3])
[1 2 3]

user=> (apply conj '() '(1 2 3))
(3 2 1)
user=> (apply conj [] '(1 2 3))
[1 2 3]

Ответы [ 2 ]

6 голосов
/ 28 января 2012

Ваш вопрос о поведении человека, а не о поведении.

Conj добавляет элементы в начало списков и в конец векторов.

См .: http://clojure.org/data_structures

5 голосов
/ 28 января 2012

Это не apply или reduce, изменяющие поведение conj.conj само по себе полиморфно.Он добавляет элементы наиболее эффективным способом для данной структуры данных.

...