gpt4 book ai didi

haskell - 为什么 Hugs 在我的数据类型声明中提示 `|`?

转载 作者:行者123 更新时间:2023-12-02 12:46:33 27 4
gpt4 key购买 nike

我正在用 haskell 编写一个小型的 lisp 解释器。在此过程中,我定义了此数据类型,以获得较少键入的数字。

data Number = _Int Integer
| _Rational Rational
| _Float Double
deriving(Eq,Show)

使用拥抱编译此文件失败,并出现以下错误:

ERROR "types.hs":16 - Syntax error in data type declaration (unexpected `|')

第 16 行是上面代码中第一个 | 的行。

最佳答案

拥抱在这里有点迂回。实际的问题不是 | ,而是构造函数名称开头的下划线 - 它们不允许以下划线开头。构造函数以大写字母开头不仅仅是惯例,而且是 Haskell 语法的一部分。

我对 Hugs 的“想法”的最佳猜测是,由于您的第一个构造函数没有正确命名,因此当您随后提供替代构造函数时,Hugs 会说:“等等,我还没有看到有效的构造函数! 这是怎么回事?”

GHC 给出了更清晰的错误:

types.hs:1:14: Not a constructor: `_Int'

关于haskell - 为什么 Hugs 在我的数据类型声明中提示 `|`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2466539/

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