Я пытаюсь понять Haskell с помощью онлайн-книги Learn you a Haskell for great Good .
Насколько мне известно, я был в состоянии понять монады до тех пор, пока не добрался до главы, посвященной Монаде состояния .
Однако код, представленный и заявленный как реализация Monad типа State (Я не смог найти его в Hoogle), кажется мне слишком сложным для обработки.
Начнем с того, что я не понимаю логики этого, т.е. почему он должен работать и как автор рассматривал этот метод. (Может быть, можно предложить соответствующие статьи или технические-документы?)
В строке 4 предполагается, что функция f принимает 1 параметр.
Однако несколькими строками ниже мы видим pop, который не принимает никаких параметров!
В дополнение к пункту 1, что автор пытается выполнить, используя функцию для представления состояния.
Будем признательны за любую помощь в понимании происходящего.
Кого это может касаться,
Приведенные ниже ответы полностью охватывают мой вопрос.
Однако я хотел бы добавить одну вещь:
Прочитав статью, предложенную ниже, я нашел ответ на свой второй пункт выше:Все это время я предполагал , что функция pop будет использоваться как :stuff >>= pop
, поскольку в типе привязки вторым параметром является функция, тогда как правильное использование — это pop >>= stuff
, что я понял после повторного прочтения. как-нотация переводится в простое связывание-лямбд.