JavaでReaderモナドを理解してみる
Readerモナドはdependency Injectionとして理解してみると良いかもしれません。
Java開発で言えば、Web開発でよくDependency Injectionがでてきます。例えば、フレームワークにSpringをつかうと、こんな感じでしょうか。
package hello; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class GreetingController { @RequestMapping("/greeting") public String greeting(Model model) { ... modelをつかってなにかする return "greeting"; } }
これをhaskellっぽく描くとこんな感じになるのではないでしょうか?
greeting :: Reader Model String greeting = do model <- ask ... modelをつかってなにかする return "greeting" runReader greeting model
正確さは欠けると思いますが、、。