我正在尝试使用在线书籍Learn you a Haskell for great Good来掌握 Haskell 。
据我所知,到目前为止,我已经能够理解 Monad,直到我读到介绍State Monad的章节。
然而,呈现并声称是 State 类型的 Monad 实现的代码(我无法在 Hoogle 中找到它)似乎对我来说太难处理了。
首先,我不明白它背后的逻辑,即为什么它应该起作用以及作者如何考虑这种技术。(也许可以建议相关文章或白皮书?)
在第 4 行,建议函数 f 采用 1 个参数。
然而,接下来的几行我们看到了 pop,它不带参数!为了扩展第 1 点,作者试图用一个函数来代表国家来完成什么。
非常感谢任何有助于理解正在发生的事情。
编辑
敬启者,
下面的答案彻底涵盖了我的问题。
不过我想补充一件事:
在阅读了下面建议的文章后,我找到了上面第二点的答案:一直以来,我都认为pop 函数会像这样使用:
stuff >>= pop
因为在绑定类型中,第二个参数是函数,而正确的用法是 this pop >>= stuff
,在再次阅读 do-notation 如何转换为普通的 bind-lambdas 后,我意识到这一点。