この記事は、Clojure Advent Calender 2013 (全部俺) 2日目です。 定期的にClojureのタイムラインを見ていたりするのですが、どうやら皆が引っかかりやすい部分の一つとして、どうやらrecurという存在があるようです。recurとは、loopと対応して、再帰的な構造を擬似的に作り出すための構文です。例えば、1から100を出力するための関数を、loopとrecurで書くと、下のような構文になるでしょう。 (defn one-to [] (loop [x 1] (if (> x 100) nil (do (println x) (recur (+ x 1)))))) さて、このように強力なループを生成するloopとrecurの構文なのですが、しかしどうやらClojureのタイムラインを見ていると、このrecurについて躓いてしまう人が多い印象を感じます。 そこで、