型だけじゃなくて>>=とreturnも合わせてモナドなんじゃないの?
型だけでは表現できないような、どうやって使うのか、という意味を>>=に込めていると理解していたのだけれど。
List型は0個以上の値の並びっていう意味しか込められないけど、
0個以上の値を返す計算を繋げるんだよーっていう文脈が>>=で伝わるっていうような。

Listで作れるモナドってconcatMapしか無いのかな?もしあってもHaskellはinstanceにしてくれないけど。