私はリーダーモナドを理解しようとしていますが、このモナドで bind (>>=) が何をするのか理解できないようです。
私が分析している実装は次のとおりです。
newtype Reader e a = Reader { runReader :: (e -> a) }
instance Monad (Reader e) where
return a = Reader $ \e -> a
(Reader r) >>= f = Reader $ \e -> runReader (f (r e)) e
- 私の最初の質問は、なぜ Reader が bind の左側に部分的に適用されるのですか?
(Reader r)
の代わりに(Reader r a)
。 - 定義のこの部分で
(f (r e))
何が起こっているか: 、その目的は何ですか?
助けてくれてどうもありがとう。