Что происходит в этом выражении let?

Я читаю этот блог. сообщение о написании API на Haskell со Скотти, и я наткнулся на раздел о преобразователях монад. Я понимаю концепцию преобразователей монад, но не могу понять, что здесь происходит:

let r m = runReaderT (runConfigM m) c

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


person npj    schedule 17.07.2016    source источник
comment
r будет функцией, а m будет параметром.   -  person pdexter    schedule 17.07.2016


Ответы (1)


Это объявление (локальной) функции с именем r. m — параметр функции. Это эквивалентно:

let r = \m -> runReaderT (runConfigM m) c
person Benjamin Hodgson♦    schedule 17.07.2016