Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
Потрясающая статья, надо будет пару раз вдумчиво проштудировать. Правда после таких статей я понимаю, что вообще не знаю Haskell, и что мне ещё вникать и вникать.
Продолжая некропостинг: я понял это так, что runReader (тип показывается runReader :: Reader r a -> r -> a) принимает Reader r a и значение типа r и возвращает результат (типа a) применения Reader-а к этому значению r (состоянию).
Так что в Reader-е значение оказывается когда runReader его передаёт, а у него оно появляется, когда мы сами передаём как-нибдуь так runReader greeter "Habr".
Тройка полезных монад