私はSICPを使って作業しています.1つの練習はforeach(doseq)を実装することです。 これは学問的な演習です。 do
はClojureの中で特別な形であり、私はそのようなものは持っていないと思うので、私は浮気されdo
場合について少し暗いよ、clojureでforeach(doseq)を実装しています
(defn for-each [proc, items]
(if (empty? items) nil
(do
(proc (first items))
(recur proc (rest items)))))
しかし:Clojureのでは、これは私が思い付いたものですまだSICPに導入されていない。 もっとミニマルな答えがありますか?
はここだけ最後の要素にprocのを実行し、別の試みです:
(defn for-each-2 [proc, items]
(let [f (first items)
r (rest items)]
(if (empty? r)
(proc f)
(recur proc r))))
あなたは問題ありません。 SICPはここでは扱いにくいです。脚注3の非常に小さなテキストをhttp://mitpress.mit.edu/sicp/full-text/book/book-Z-H-20.html#call_footnote_Temp_323でご覧ください。 SICPで 'cond 'を実行するときはいつでも、' cond'の各節に対して暗黙の 'begin'があります。そして、SICPの 'begin'はClojureでかなり' do'です。 – dyoo