Комментарии 4
Можно обойтись одним lift. Для меня как раз lift был самым непонятным. В do-notation теряется логика как состояние передается из стоки в строку. Мне долго приходилось переваривать что в каждой строке незримо передается state из предыдущей, get его копирует, а lift удерживает передавая внутреннюю манаду функции которой она нужна. Красивый язык, но сложный для понимания из-за высоких абстракций.
+4
Монады в Haskell это вычисления с побочным эффектом
После этого можно дальше уже не читать. Во-первых, это в общем случае не так, во-вторых, конкретно именно для рассматриваемой монады State это не так. "Так" оно только для монады IO (ну и строимых на её основе).
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пример использования State и StateT