関数型言語Part3
■ このスレッドは過去ログ倉庫に格納されています
0347デフォルトの名無しさん
NGNGチャーチ・ロッサー性というのは、すべての項について、
もし正規形にたどり着いたならそれは同じ項になる、
ということなので、たとえそうなるような
(call/cc (lambda (k) (cons (k 1) (k 1))))
という項が存在したとしても、そうならないような
(call/cc (lambda (k) (cons (k 1) (k 2))))
が存在する限り、チャーチ・ロッサー性が成り立ったことにはなりません。
そして、チャーチ・ロッサー性は参照透明性を実現する性質で、
これが成り立たないものは関数型として純粋とはいえません。
もちろん「純粋関数型」の定義が私と違うひとがいる可能性はありますが。
Scheme の継続を使うとチャーチ・ロッサー性が満たされなくなるということは
この継続は関数型言語の純粋さを傷つける機能というわけで、
継続という機能は関数型ではない、ということなのです。
■ このスレッドは過去ログ倉庫に格納されています