В настоящее время я изучаю Clojure и пытаюсь научиться делать вещи наилучшим образом. Сегодня я смотрю на основную концепцию работы с последовательностью, знаю основы карт, фильтрации и сокращения. Теперь я хочу попробовать что-то сделать с парами элементов в последовательности, и я нашел два способа сделать это. Я применяю функцию println. Вывод просто 12 34 56 7
(def xs [1 2 3 4 5 6 7])
(defn work_on_pairs [xs]
(loop [data xs]
(if (empty? data)
data
(do
(println (str (first data) (second data)))
(recur (drop 2 data))))))
(work_on_pairs xs)
Я имею в виду, я мог бы сделать так
(map println (zipmap (take-nth 2 xs) (take-nth 2 (drop 1 xs))))
;; prints [1 2] [3 4] [5 6], and we loose the last element because zip.
Но это не очень хорошо .. Мой опыт в Python, где яМогу просто сказать zip(xs[::2], xs[1::2])
Но я думаю, что это не способ Clojure сделать это. Поэтому я ищу предложения о том, как сделать то же самое, наилучшим образом Clojure.
Я понимаю, что я новичок в Clojure, я даже не знаю, как называется этот тип операции.
Спасибо за любой ввод