Почему конкатэт по векторам оценивается в список? - PullRequest
28 голосов
/ 26 апреля 2010

Вызов concat для векторов возвращает список.Будучи полным новичком, я ожидаю, что результатом также будет вектор.Почему преобразование в список?

Пример:

user=> (concat [1 2] [3 4] [5 6])
(1 2 3 4 5 6)
; Why not: [1 2 3 4 5 6] ?

1 Ответ

36 голосов
/ 26 апреля 2010

concat возвращает ленивую последовательность.

user=> (doc concat)
-------------------------
clojure.core/concat
([] [x] [x y] [x y & zs])
  Returns a lazy seq representing the concatenation of the elements in the supplied colls.

Вы можете преобразовать его обратно в вектор с:

user=> (into [] (concat [1 2] [3 4] [5 6]))
[1 2 3 4 5 6]

в использует переходные процессы, поэтому довольно быстро об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...