Я работаю через SICP - одним из упражнений является реализация foreach (дозаq). Это академическое упражнение .Вкратце, это то, что я придумал:
(defn for-each [proc, items]
(if (empty? items) nil
(do
(proc (first items))
(recur proc (rest items)))))
, но я немного озадачен тем, что do
обманывает, потому что do
- это особая форма в clojure, и я не 'Не думаю, что что-то подобное было введено в SICP. есть ли более минималистичный ответ?
Вот еще одна попытка, которая выполняет proc только для последнего элемента:
(defn for-each-2 [proc, items]
(let [f (first items)
r (rest items)]
(if (empty? r)
(proc f)
(recur proc r))))