2016-07-17 1 views
0

Я читаю через это blog post о написании API в Haskell с Scotty, и я наткнулся на раздел о монадных трансформаторах. Я понимаю понятие монады трансформаторов, но я не могу обернуть мою голову вокруг того, что происходит здесь:Что происходит в этом выражении?

let r m = runReaderT (runConfigM m) c 

Как ссылка выражения m когда m объявляется в том же let выражении, которое использует его? Что здесь происходит? Что такое m?

+0

'r' будет функцией, а' m' будет параметром. – pdexter

ответ

6

Это (местная) декларация функции с именем r. m - параметр функции. Это эквивалентно:

let r = \m -> runReaderT (runConfigM m) c 
+0

Это объясняет это отлично, спасибо! – npj