Monadic Ruby

 Rubyモナドっぽい物が実装できないかと思ってちょっと実験してみたのだが、やっぱり難しかった。型推論がないのをあきらめて、演算子を再定義したらbindっぽいのはいけるんじゃないかって事で、>=の定義を上書してみた。Maybeクラスを定義して、そこにbindを定義しておいて、Maybeクラスのインスタンスを作るだけの関数Maybeを用意すると、以下の様に書ける。

Maybe 1 >= puts

 書けることは書けるが、うまく動かない。実行すると、Maybe 1はまぁうまくいくんだけど、putsが先に実行される。そんでnilが返ってきて、bindの引数としてnilが渡ってしまう。考えてみりゃ、そりゃそうですよねぇ。書く前に気づけって話だ。これは難しい。