Tuesday 22 June 2010

Real Wordl Haskell

どうもこうも、さっぱりわからんので(特にMonadsが)、諦めて本を読むことにしました。結局、Amazon 経由で買ったんですが、Web 上でも読める。Twitter で聞いてみたお勧めの本です。

 http://book.realworldhaskell.org/read/monads.html

Chapter 7 の IO は楽勝。ここはわかりやすく書いてある。

なんだが、Chapter 14 の Monads の例題が、ほtんど動かない。なんだよ〜

僕の理解では、「Monads 自体には特別なことはなくて、関数の入出力依存を利用して、順序制御を行ない、do とか、順序付きの入出力を実現する」ってことなんだけど...

ただ、IOに関しては action があるので、少し状況が異なるはず。そのあたりの処理を読みたかったんだが、あまり深入り出来ず。(つうか、うまく設計できてないんじゃないの? Buffering とかさ...)

file:ch10/PNM.hs とか書いてあるんだけど、そういうファイルが用意されているわけではないのね。なので、例題が動かないのが、とっても困る。

でも、do とかで「上から順次実行で、途中で変数の代入も可能」ってことだと、見掛けは C とかと変わらない。変わらないです。

ステートメント、あるいは、関数レベルで Pure であっても、全体が Monads で遂次に書かれるってことだと、Pure Functional の有難味ってなんだろう?

そんな状況だったので学生にもHaskellは、不評だったみたいです。

でも、file の中身を lazy に取り出す hGetContents、stdin/stdout を filtering 出来る interactive は、良かったな。これは便利だと思いました。

Monads を使った Multi thread や、software transactional memory とかになると、そこまでやるんだったら、遂次型の言語で良いやって感じです。

マイナーな言語は、Prolog でさんざんやったので、また、それに commit するってのは、よほどでないとやらないだろうな... まぁ、でも、OCaml よりは、Haskell の方が、帰納的には面白い。

No comments: