2006-06-09から1日間の記事一覧

Maybe型という表現

Haskellにおいて、Maybeは型構成子であって型ではないので、Maybe型という表現は初学者の混乱を招くのではないだろうか、Maybe a型と書くべきなのではないか、と思うのだけれど、まだ理解が足りないのかしら。

スタック

スタックスタックと書いてきたが、計算途中の値を保存しておくデータ構造、もしかするとスタックじゃなかったりするのかしら。これもありえそう。なにせ関数型言語だ。油断は禁物だ。

遅延評価と再帰

上記の非末尾再帰のfactは、もしかしたらfact 5 = 5 * fact 4 = 5 * 4 * fact 3 = 20 * fact 3 ...という風に実行されてるんじゃなかろうか。そうだとしたら、スタックが溢れない説明がつく。つまり、スタックの内容を簡約できそうなら、簡約してしまう、と…

Haskellにおける末尾再帰の最適化

Haskellにおいて、末尾再帰の最適化というのは、どうなっているのだろう?気になったので、ちょっと試してみた。適当に階乗を定義して、実験してみる。 fact 0 = 1 fact n = n * fact (n - 1) 末尾再帰にすらなっていないが、このfactは、fact 100000とか実…