Haskellのモナド(9)
returnの振る舞いは、右結合、左結合を満たすことという指定があります。また、returnは値をとるだけで、実際にはなんの計算もしない、と決まっています。例として、
maternalGrandfather p = do { m <- mother p; gm <- father m; return gm; }
は以下のコードと全く同じです。
maternalGrandfather p = do { m <- mother p; father m; }
これはreturnのもつ右結合性のおかげです。この2つの規則はモノイドの一般的な要素のもつ規則と類似しています。