一週間遅れくらいでタモリ倶楽部が放送される地域に住んでるNizahです、こんちわ
今日は年に一度の空耳アワードなのに、ゲストが非常にガッカリな感じ
カエラとか呼んでくるなよヽ(`Д´)丿 去年ので懲りてねぇのか
わかったよーなモナド。
でも「モナドのすべて」を読んでたら、分からなくなってきた。
つー事で、モナドでやってる事をモナドじゃない方法でやってみよう。
羊さん。
sheeptest.hs
ツリーっぽいインチキなデータ構造で羊さんを表現してみる。
母親の父親とか、父親の父親とか、関数合成で上手く表現出来ているように見えるけど
父親が存在しないので paternalGrandfather dolly が実行時エラーを起こす。
mother, father を関数として実装して、MyNothingのときにゴニョゴニョやれば出来なくも無さそうだけど
(眠いのでやらない)
しかし、そういうルールをゴニョゴニョするって事は、結局はモナドに必要なルール(モナド則?)を実装する事になって、結局「もなど」になるんじゃなかろーか
Monadのインスタンスかどうかなんて、本質的にはどうでもよくて
モナド則が実現されているかどうかが、その本質なんだ、多分。
(でも、モナド則を実現するのはプログラマ任せ なんて記述もあるしなぁ)
ん、Monadのインスタンスでも「モナド」じゃないようなクラスも作れるのかな?(意味はさておき)
しばらく、「もなど」っぽい様なコードを書いて、「モナド」とはなんぞや ってのを考えてみよう。
特に、計算戦略の隠蔽とか、まだしっくり来ない。
しかし、モナドを考えるときには IO は忘れた方が良いような気がする。
あれ、たしかに身近だけど、あれがモナドって言われると余計に意味分かんないって
とりあえず

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
これらは読んだわけですが、その次にどうするよ? って話。
A Gentle Introduction to Haskell, Version 98
やさしい Haskell 入門 (バージョン98)、中身は日本語だよ。
を読んでます。
その後は
なぜ関数プログラミングは重要か
The Haskell 98 Language Report ( Haskell 98 言語とライブラリ 改訂レポート)
All About Monads (モナドのすべて)
辺りを読もうかと。
# もちろんコードも書いてるよ、後PreludeとかData.Listも読んでます。
それが終わったら、Haskell関連の洋書が何冊か出てるんで、それかな。
数独特プログラム、まだ未完成。
簡単なアルゴリズムしか実装してないので、難しいヤツは解けない。
息抜きに、まぁ、他にもやってる人居るだろうと思って適当にぐぐる。
……うーん。
見つけたものは
「とりあえず適当に数入れて詰まったら捨てる」
っつーもの
いや、確かに早いし、コードも短いし、そっちの方が良いんだろうけど
解いた気にならない(重要)
まー 人間と同じ解法をやらせるのは間違ってるんだろうけど
練習がてらなので気にしない。
これ買った。

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
前から出るっつー話があった「ふつうのHaskellプログラミング」
随分出ないんで企画ポシャったのかと思ってた
後、適当にもう一冊

入門Haskell―はじめて学ぶ関数型言語
入門書の類は複数併読しなきゃ信用できない。
いや、これらがそうだとは言ってないよ?
一般的に、入門書は分かり易さの為に若干のうそ大げさ紛らわしいが入ってたり
一部の内容を端折ってたり、著者のレベルが低かったりするから
一冊の内容を鵜呑みにするのは危険。