せっかくだから、赤い扉を選ぶかわりに、階乗関数を書いてみた。うーん、遅延評価しないから
(((if-then-else true) x) y)
の場合、xだけでなくyも評価してしまって、再帰的関数が無限ループに落ちてしまう。
(((if-then-else true_) (delay x)) (delay y))
と書く必要がある。ちょっといやだ。考えたけど良く分からない。何かマクロを定義したら回避できるのかな。アイディア募集。
とりあえず、fact2.scm。10!を計算するのに、30秒ほどかかる。
にしてもアレですね。Turing機械の場合は「右に左にと動いて愚直にがんばってるなあ」と何をしているかが目に見えて分かるけど、ラムダ計算の場合は何やってんだかさっぱり分かりませんね。
Wikiの構造化に関しては「はてなダイアリーキーワード」という壮大な実験を参照するといいかも。
。「はてなダイアリーキーワードのツリー機能がどのように導入され、議論され、最終的に廃止されるに至ったか。」
個人で使おうが、複数で使おうが、Wikiに構造を入れたらその構造をどうするかに悩んで、試行錯誤する事になるだろう。それなら、同じ時間を「ページにどのような名前を付けるか」考えるのに使うべきだと思う。
ある漠然とした考えに適切な名前をつけてページを作り、関連するだろうWikiページにリンクする。ここら辺がWikiで一番おもしろいところだと思う。
ちょきではページの下に関連するだろうページへのリンクを「関連」というかたちで作るようにしている。
勘違いしていた。遅いのはlambda2numであって、ラムダ計算自体は遅くなかった。
16!で1秒。20!で15秒程度。ちなみに20!は「2432902008176640000」。
最近のコメント