Conj [ойн]. Возвращает новую коллекцию с xs "Добавил". (элемент коннекта) возвращает (элемент). "Добавление" может происходят в разных "местах" в зависимости от конкретного типа.
Более эффективно "добавлять" элементы в конец вектора, в то время как более эффективно это делать в начале списков. conj использует то, что наиболее эффективно для структуры данных, которую вы им предоставляете.
В примерах, которые вы даете, '(1 2 3) и (seq [1 2 3]) реализуют ISeq (см. документацию для seq?), а [1 2 3] doesn ' т.
Clojure conj в конечном итоге вызывает метод cons (не путать с функцией cons - этот метод является внутренним кодом clojure) в базовой структуре данных; для векторов (PersistentVector), cons добавляет элементы в конец, тогда как для списков они добавляются к фронту (метод cons для PersistentList возвращает новый список с новым элементом в качестве главы, и существующий список как его хвост).