型だけでReaderモナドを理解しようと試みる
Reader Monad は 昔 Environment Monad と呼ばれていたそうです。
ということで(!?)、設定ファイルを使う体で例を作ってみました。
設定ファイルを使わないと、
doJob123' = \x -> doJob3' x $ doJob2' x $ doJob1' x ()
となります。ここでいうx
が設定情報に相当する部分なのですが、コード上ずっと持ち回る必要があり、コードが読みにくくなります。
Readerモナドをつかうと、
doJobR123 = doJobR1 () >>= doJobR2 >>= doJobR3
となり、設定情報の持ち回りコードが隠蔽化されます。