Hatena::ブログ(Diary)

sshi.Continual このページをアンテナに追加 RSSフィード

プロフィール

sshi

SFと映画と小説とRuby信者(最近はhaskellびいき)です。

 | 

2006-06-06 Tue

[]もなもなモナド 番外編 もなもなモナド 番外編を含むブックマーク

ちらっと見かけたhaskell学習中の方のモナドに対する感想があまりに素晴しく見えたので引用

Unixコマンドパイプでつないで、複数のプロセスストリームを介して連携して動いているようにもみえるし、 ドミノをたくさん立て、シーソーや滑り台、水が一杯入ったグラス、様々な仕掛けを巧妙に配置した後、最後に華麗に倒すような、そんな風にも見えます。 うーむ、どうなっているんだろう?

a-sanの日記

まさにそれ!その両方!

外からみると、モナドbindしていくのはUnixコマンドパイプで連結していくのと同じ。bind(>>=)一発で複数のモナドががちゃっと繋がる。でもストリーム一本でしか繋がらないわけじゃなくて、接続部分の中を見ると実はいろいろと複雑な繋ぎ方ができるようになっている。

中は複雑なのに、外から見ると単純なのは、様々な仕掛け(モナド則の制約と、それを満たす型クラスの実装と、do記法)が巧妙に配置されているから。そのおかげでプログラマbindだけでいろんな処理を単純に繋げられるし、そして最後には複雑な接続部分も含めて全てが華麗に倒れてくれる。

モナドが難しいのは、中の仕組みが外に見えないからだろうな。プログラマから中の複雑さを見えなくするところこそがモナドの良さなんだけど。学習効率を下げている原因が、利点そのものだなんて。悩ましい。モナドを使ったソースを、モナドを使わないソースに変換してくれるツールがあると学習しやすいかもな。んーでも、IOモナドの中身は簡単にはのぞけないのか…。

トラックバック - http://d.hatena.ne.jp/sshi/20060606
 | 

あわせて読みたい
sshi.Continual 930402 なかのひと RSS feed meter for http://d.hatena.ne.jp/sshi/