Я пытаюсь понять Haskell, используя онлайн-книгу Учите вас Haskell для отличного хорошего.
Я, насколько мне известно, смог понять Монады до тех пор, пока не попаду в главу, в которой представлена State Monad.
Однако код, представленный и заявленный как реализация типа Monad типа State (я не смог найти его в Hoogle), кажется слишком большим для меня.
-
Начнем с того, что я не понимаю логику, лежащую в ее основе, то есть, почему она должна работать и как автор рассматривал эту технику (могут быть предложены соответствующие статьи или справочные документы?)
-
В строке 4 предполагается, что функция f принимает 1 параметр.
Однако несколько строк вниз мы представляем поп, который не принимает параметров! -
Чтобы расширить точку 1, то, что пытается сделать автор, используя функцию для представления состояния.
Любая помощь в понимании того, что происходит, очень ценится.
Изменить
К кому это может относиться,
Ниже приведены ответы на мои вопросы. Одна вещь, которую я хотел бы добавить:
После прочтения статьи, предложенной ниже, я нашел ответ на мой второй пункт выше:
Все это время я предполагал, что функция pop будет использоваться как:
stuff >>= pop
, так как в типе связывания второй параметр является функцией, тогда как правильное использование - это pop >>= stuff
, которое я понял после прочтения снова, как do-notation транслируется на простой bind-lambdas.