みどりねこ日記

よくわからないけど、頑張りますよ。

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つの規則はモノイドの一般的な要素のもつ規則と類似しています。