Ответ 1
Процедура conj
добавляет новые элементы "в разных местах" в зависимости от конкретного типа". В частности, conj
добавляет новые элементы в наиболее эффективное место для данной структуры данных.
В односвязном списке самое дешевое место для вставки нового элемента во главе - нет необходимости перемещаться по списку, чтобы найти точку вставки, просто подключите новый элемент к первому элементу списка.
В векторе самое дешевое место в конце - нет необходимости сдвигать или перемещать остальные элементы, чтобы освободить место для нового элемента, и если вектор был создан с дополнительным свободным пространством с фактическим размером больше, чем его текущую длину (как в случае переходных векторов и conj!
, но не с постоянными векторами), это простой вопрос о добавлении нового элемента в первое свободное положение и приращение его длины на единицу.