関数従属性について質問させてください
MonadState の定義を見て
調べてみたところ、以下のように説明がありました。
例)
と、いう程度に簡単に理解できるような例はありますか ?
(例えがわかりにくかったら無視してください)
MonadState の定義を見て
| m -> s
が気になりました。class (Monad m) => MonadState s m | m -> s where get :: m s put :: s -> m ()
調べてみたところ、以下のように説明がありました。
"->" の左側にある型によって右側の型が一意に決定されるそれ以外にも説明のあるところもあったのですが、納得したといえるほど理解できませんでした。
例)
read "123" :: Int
:: Int
がないと "123" がなんの型かわからないよね。と、いう程度に簡単に理解できるような例はありますか ?
(例えがわかりにくかったら無視してください)