2014-01-20 CPSで実装したモナドは何故速いのかモナド変換子の速さを測ってみる - モナドとわたしとコモナドCPSでモナドを実装すると速くなるらしい。以前、その理由について考えてみたのだが、結論に達しなかった。そこで、続きを書く。まず、Twitterである方に教えていただいたのだが、CPSで実装したモナドは、非CPSで実装したモナドに比べて次の2点の理由により高速であるという。データの生成/分解が抑えられるから合成時に継続を破棄できるからどういうことなのだろうか。Maybeモナドを例として以上の2点を確認したい——。と、確認したかったのだが、検証したところ、1点目については結論を得たものの、2点目については「速くならない」という矛盾した結論が出てしまった。そこで、以上の1点目についてのみ検証した記録をつける。非CPS版Maybeモナドまず、非CPS版のMaybeモナドの定義は以下