私はSICPを使用しています。1つの演習はforeach(doseq)を実装することです。これは学術的な演習です。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))))