【发布时间】:2010-03-17 23:05:40
【问题描述】:
我正在用haskell 编写一个小型的lisp 解释器。在这个过程中,我定义了这个数据类型,以获得一个更少类型的数字。
data Number = _Int Integer
| _Rational Rational
| _Float Double
deriving(Eq,Show)
用 hugs 编译失败并出现以下错误:
ERROR "types.hs":16 - 数据类型声明中的语法错误(意外的 `|')
第 16 行是上面代码中第一个 | 所在的行。
【问题讨论】:
-
你用的是什么编译器? GHCi (v 6.10.4) 抱怨下划线,但是当我 s/_/M/ 时,它编译得很好。
-
我正在使用 hugs98 200609-4。这确实是导致问题的下划线。 :)
-
顺便说一句,在几乎任何情况下,我都会推荐 GHC 而不是 Hugs。许多较早的文档说,Hugs 更适合初学者,因为它具有 REPL,但事实并非如此,因为 GHCi 实际上提供了比 Hugs 更好的 REPL。