bind
>>= を、(>>= f) という、右辺を部分適用させたセクション単位で考えると見やすいかもしれない。
f :: a -> m b ならば (>>= f) :: m a -> m b
>>= を、上のように、「(a -> m b) な関数に被せて (m a -> m b) という関数を作る仕組み」だと考えるんである。
というか、これって実は 世界で一番か二番くらいにやさしい「モナド入門」 の ext関数そのものだ。
>>= を、(>>= f) という、右辺を部分適用させたセクション単位で考えると見やすいかもしれない。
f :: a -> m b ならば (>>= f) :: m a -> m b
>>= を、上のように、「(a -> m b) な関数に被せて (m a -> m b) という関数を作る仕組み」だと考えるんである。
というか、これって実は 世界で一番か二番くらいにやさしい「モナド入門」 の ext関数そのものだ。