gpt4 book ai didi

Haskell 示例通常不起作用

转载 作者:行者123 更新时间:2023-12-03 01:49:08 26 4
gpt4 key购买 nike

我是 haskell 的初学者,使用最新的 GHCi 2011.2.0.1。我经常遇到的一个挫折是,互联网和书籍中的示例(甚至来自官方 haskell.org 网站,例如 http://www.haskell.org/haskellwiki/State_Monad 的 example-2 )经常无法编译。并且需要进行几轮搜索和发布问题才能找出问题所在。甚至 RWH 书中的一些示例也不起作用。

这是新版本的 haskell 或 haskell 平台的问题吗?语言/平台是否正在开发且不稳定,或者只有示例已过时?不管怎样,对于新学生来说,找到正确的例子来学习的最佳方法是什么?

更具体地说,您能帮助修复上面提到的状态 monad 示例吗?

最佳答案

在这种情况下,问题在于 State 构造函数已在最新版本的 Monad Transformer Library 中删除。如果将 getNext 定义中的 State 替换为 state,那么程序就可以正常工作。 (这是因为 State 被重新定义为 StateT Identity,即身份 monad 上的状态 monad 转换器,因此单独的数据类型已被删除。如果您不这样做不知道这意味着什么,不用担心;它只是意味着每当您看到它时,都必须将 State 替换为 state。)

网络上或 RWH 中现有示例的大多数问题都只是由于新版本的库造成的。 (我认为 RWH 示例的主要问题是 Parsec 示例是为 Parsec 2 编写的;Parsec 3 发生了很大变化,因此至少您可能需要添加一些导入。)

总的来说,Haskell 确实缺乏足够的最新、有用的资源; HaskellWiki 页面似乎没有维护。 (虽然 HaskellWiki 确实是 haskell.org 的官方网站,但页面是由用户编写和维护的,因此 wiki 上的某些内容并不一定意味着它是最新的或高质量的。)

删除了 State 的 Monad Transformer Library 版本于 2010 年 10 月发布,因此遗憾的是仍然有很多代码因此无法在新版本中使用。值得庆幸的是,修复很简单。

关于Haskell 示例通常不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com