関数型プログラミング言語Haskell Part31at TECH関数型プログラミング言語Haskell Part31 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト1004:デフォルトの名無しさん 19/01/24 18:25:57.35 wii/ewut.net ちょっと勉強したけど、なんか仕様がコロコロ変わってるような気がして、 本格的に手を出しにくい 1005:デフォルトの名無しさん 19/01/24 18:27:39.45 tqh7mtUe.net mtl パッケージの Control.Monad.Reader モジュールで MonadReader クラスが定義されています。 この定義で、なぜ m -> r などという制約が課せられているのでしょうか。 class Monad m => MonadReader r m | m -> r where この制約がないと何が不都合なのでしょうか。 1006:デフォルトの名無しさん 19/01/24 23:18:18.45 9BqsZZXL.net 関数従属を消すとコンパイルが通らなくなる例 https://ideone.com/sdajAE 具体的には instance Monad m => MonadReader r (ReaderT r m) の他に instance Monad m => MonadReader () (ReaderT r m) もあり得るから MonadReaderに関数従属がないとReaderTの型クラスのようには扱えない 1007:デフォルトの名無しさん 19/01/25 00:43:33.65 .net m → r mを決めると自動的にrも決まるという意味だろうか いまモナドを、ReaderT r m と決め� 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch