Чтобы извлечь лучшее из того, что Амальлой и Лоран Пети уже сказали: используйте функцию conj
.
Одной из замечательных абстракций, которые предоставляет Clojure, является API-интерфейс Sequence API, которыйвключает в себя функцию conj
.Если это вообще возможно, ваш код должен быть настолько независимым от типа коллекции, насколько это возможно, вместо этого использовать API seq для обработки операций над коллекциями и выбирать определенный тип коллекции только тогда, когда вам нужно быть конкретным.
Есливекторы хорошо подходят, тогда да, conj
будет добавлять элементы в конец.Если вместо этого использовать списки, то conj
будет добавлять вещи в начало вашей коллекции.Но если вы затем используете стандартные функции API seq для извлечения элементов из «верха» коллекции (задней части вектора, передней части списка), то не имеет значения, какую реализацию вы используете, потому что она всегда будет использоватьтот, который имеет лучшую производительность и, следовательно, добавляет и удаляет элементы, будет согласованным.