■ [haskell] モナドについてなんか分かった気がした モナドって「結局何なの?」ってのがいまいち分からずにもやもやしてたんだが、なんか分かった気がしたのでメモ。 関数型言語では値が関数から関数へと流れていくことで計算が行われる。 このプロセスに「一皮被せる」ことで、計算の本筋とは別にいろいろな「仕掛け」を組み込むのがモナド。 値 a をただ流すんじゃなくて、Maybe a のようにモナドという箱に入れて、箱に入ったものどうしの演算を定義することで仕掛けを作る。 Haskellでは、モナドを「returnとbind(>>=)というメソッドが定義されている型」で表す。returnは値を箱に入れる関数。>>=は値を流す関数。 class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a returnの型は
![Route 477(2007-07-18)](https://cdn-ak-scissors.b.st-hatena.com/image/square/b0dd2a08b2c0fff30d70543ed7fa340ebfeb5697/height=288;version=1;width=512/https%3A%2F%2Froute477.net%2Fd%2Fassets%2Fogimage.png)