2007-04-15 [長年日記]
λ. Trampolined Style by Steven E. Ganz, Daniel P. Friedman and Mitchell Wand
- <URL:http://www.cs.indiana.edu/~sganz/publications/icfp99/paper.pdf>
- <URL:http://citeseer.ist.psu.edu/ganz99trampolined.html>
昨日のRHG読書会のjsthreadの話に出てきていたので、読んでみた。 control operator 系(?)の話は苦手で、読んでもあまり分かった気がしない。
Trampolined style で書かれた階乗のコードは以下。 基本的には末尾呼び出しの形式で、末尾で値を返す部分をreturn関数を介するように、末尾呼び出し部分をbounce関数を介するようにしてある。
(define fact-acc (lambda (n acc) (if (zero? n) (return acc) (bounce (lambda () (fact-acc (sub1 n) (* acc n)))))))
(後で書くかも)
モナド等と違って T, return, bounce の満たすべき代数法則が与えられていないのが、何だか不思議。
λ. 風邪気味
先週の疲れが出たのか、体調が悪い。 今日は携帯の機種変更をしに行こうと思っていたが、ゆっくり休むことにする。