我正在阅读这篇blog post关于用Scotty在Haskell中编写API的内容,我看到了关于monad变换器的部分。我理解monad变换器的概念,但我无法理解这里发生的事情:
let r m = runReaderT (runConfigM m) c
当m
在使用它的同一个m
表达式中声明时,表达式如何引用let
?这里发生了什么?什么是m
?
答案 0 :(得分:6)
这是一个名为r
的(本地)函数声明。 m
是函数的参数。它相当于:
let r = \m -> runReaderT (runConfigM m) c