реализация foreach (Doseq) в Clojure

Я работаю через 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))))
6
задан Óscar López 27 February 2012 в 02:09
поделиться