Я работаю через SICP - одно упражнение - реализовать foreach (duplic ). Это академическое упражнение . В Clojure я придумал следующее:
(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))))