帰宅途中で
apply は再帰で reduce は繰り返しなんだろうな、という事に気づいた。違うかも。
recur と loop
サンプルコードが以下。
(def factorial (fn [n] (loop [cnt n acc 1] (if (zero? cnt) acc (recur (dec cnt) (* acc cnt))))))
なんとなくコードから処理は理解できる。どうも Clojure special_forms によると recur は引数の数で recursion point をナニする模様。一応 non-stack-consuming とあるけど微妙に末尾再帰最適化では無いような記述があるようなカンジですが。。
Data Structures
- immutable との事。set! 系なナニが無いのだろうな
- nil は java の null な模様
- てーコトは '() とは異なるオブジェクトなのかな
SICP な課題を
Clojure で、って次から当分図形言語な予感。そういえば前回の shibuya.lisp は Clojure ネタ満載だったんじゃなかったかな。