[xs]
создает одноэлементный вектор, содержащий единственный элемент xs
. Напротив, (vec xs)
не создает одноэлементный вектор, содержащий элемент xs
. Вместо этого он создает вектор из n элементов, содержащий каждый элемент в xs
отдельно. Функция, которая делает первое - vector
: (vector x y z)
концептуально такая же, как [x y z]
. Сравните с (list x)
и (seq x)
: первый создает одноэлементную последовательность, содержащую свои входные данные, а второй преобразует свои входные данные в последовательность.
Конечно, если вы собираетесь conj
на результат vector
, вы также можете просто построить 2-элементный вектор напрямую: вместо (conj (vector x) y)
, напишите [x y]
.