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