モナド めも

わかったよーなモナド。 でも「モナドのすべて」を読んでたら、分からなくなってきた。

つー事で、モナドでやってる事をモナドじゃない方法でやってみよう。

羊さん。 sheeptest.hs

ツリーっぽいインチキなデータ構造で羊さんを表現してみる。

母親の父親とか、父親の父親とか、関数合成で上手く表現出来ているように見えるけど 父親が存在しないので paternalGrandfather dolly が実行時エラーを起こす。

mother, father を関数として実装して、MyNothingのときにゴニョゴニョやれば出来なくも無さそうだけど (眠いのでやらない)

しかし、そういうルールをゴニョゴニョするって事は、結局はモナドに必要なルール(モナド則?)を実装する事になって、結局「もなど」になるんじゃなかろーか

Monadインスタンスかどうかなんて、本質的にはどうでもよくて モナド則が実現されているかどうかが、その本質なんだ、多分。 (でも、モナド則を実現するのはプログラマ任せ なんて記述もあるしなぁ) ん、Monadインスタンスでも「モナド」じゃないようなクラスも作れるのかな?(意味はさておき)

しばらく、「もなど」っぽい様なコードを書いて、「モナド」とはなんぞや ってのを考えてみよう。

特に、計算戦略の隠蔽とか、まだしっくり来ない。

しかし、モナドを考えるときには IO は忘れた方が良いような気がする。 あれ、たしかに身近だけど、あれがモナドって言われると余計に意味分かんないって