Наборы не имеют гарантии заказа в clojure, если вы не используете sorted-set
, поэтому могут быть неожиданные результаты при использовании drop-last
на наборе. Если у вас есть отсортированный набор, вы можете добавить его последним идемпотентно.
Тем не менее, пример данных в комментариях вашего кода вообще не является набором, это список, и вывод, который вы видите, учитывая Ваш ввод ожидается, так как в этом списке есть три элемента, последний из которых является самим списком со своими собственными элементами:
first => "This"
second => "is"
last => ("my" "input" ("and" "you" ("are" "awesome")))
Удаление последнего здесь должно дать (This is)
, что вы и указали происходящее.
Если вы хотите удалить внутренний список '("are" "awesome")
, вы можете следовать некоторым советам по прохождению, данным вам в комментариях. Кроме того, если вы не против сделать свой ввод векторным, вы можете выполнить с ним несколько ассоциативных операций, снимая с бедра, например:
(assoc
input
(- (count input) 1)
(->> input
(take-last 1)
first
(drop-last 1)))