这个let表达式发生了什么?

npj*_*npj 0 syntax haskell let

我正在阅读这篇关于用Scotty在Haskell中编写API的博客文章,我看到了关于monad变换器的部分.我理解monad变换器的概念,但我无法理解这里发生的事情:

let r m = runReaderT (runConfigM m) c
Run Code Online (Sandbox Code Playgroud)

如何表达的参考m,当m在同一声明let使用它体现在哪里?这里发生了什么?什么是m

Ben*_*son 6

这是一个带有名称的(本地)函数声明r.m是函数的参数.它相当于:

let r = \m -> runReaderT (runConfigM m) c
Run Code Online (Sandbox Code Playgroud)