2010年3月24日水曜日

Clojure 再帰

Clojureの再帰の書き方

(loop [result [] x 5]
  (if (zero? x)
    result
    (recur (conj result x) (dec x))))
-> [5 4 3 2 1]

loopは別にループをさせるわけではなく、[]に変数の束縛を作って、その後のS式を評価するもので、letとほぼ同じ。ただ、loopは、recurを読んだときに、loopを指定された引数で実行して、再帰を実現するようです。

0 件のコメント: