Путаница по поводу кода State Monad в «Learn you a Haskell»

Я пытаюсь понять Haskell с помощью онлайн-книги Learn you a Haskell for great Good .

Насколько мне известно, я был в состоянии понять монады до тех пор, пока не добрался до главы, посвященной Монаде состояния .

Однако код, представленный и заявленный как реализация Monad типа State (Я не смог найти его в Hoogle), кажется мне слишком сложным для обработки.

  • Начнем с того, что я не понимаю логики этого, т.е. почему он должен работать и как автор рассматривал этот метод. (Может быть, можно предложить соответствующие статьи или технические-документы?)

  • В строке 4 предполагается, что функция f принимает 1 параметр.
    Однако несколькими строками ниже мы видим pop, который не принимает никаких параметров!

  • В дополнение к пункту 1, что автор пытается выполнить, используя функцию для представления состояния.

Будем признательны за любую помощь в понимании происходящего.

Редактировать

Кого это может касаться,

Приведенные ниже ответы полностью охватывают мой вопрос.
Однако я хотел бы добавить одну вещь:

Прочитав статью, предложенную ниже, я нашел ответ на свой второй пункт выше:Все это время я предполагал , что функция pop будет использоваться как :
stuff >>= pop, поскольку в типе привязки вторым параметром является функция, тогда как правильное использование — это pop >>= stuff, что я понял после повторного прочтения. как-нотация переводится в простое связывание-лямбд.

22
задан byrondrossos 19 April 2012 в 17:10
поделиться