- 905 名前:デフォルトの名無しさん [2017/08/18(金) 09:22:11.27 ID:xzRfloCT.net]
- >>891
モナドってより型クラスがインターフェースに近い。 んで、モナドは型クラスの一つでしかない。 等値を司るEq型クラスのインスタンスになれば=が使える。 大小比較を司るOrd型クラスのインスタンスになれば<や<=が使える。 それと同じ。 逐次処理を司るMonad型クラスのインスタンスになれば>>=とreturnが使える。 IOモナドはIO型を受け取るモナドってだけ。 素のモナドを使うのがほぼIO型しかないからIOモナドって一緒くたにされるけど、IOとモナドは分けて考える。 リストやMaybeもモナドのインスタンスなので、モナドでもある。 モナドが他の型クラスと違うのは、メソッド定義(インターフェースになる関数や演算子をインスタンスになる型で定義)の時にモナド則に則って書く必要があるということ。 それとモナド則を正しく定義できたかは型クラスには無関係なので、定義した人が正しさを保証する必要があるということ。
|

|