我是相当新的Haskell,所以它可能是一些简单的东西,我错过了,但我有一个表达式树,看起来像这样:
data Expression = Lit Float
| Add Expression Expression
| Mul Expression Expression
| Sub Expression Expression
| Div Expression Expression
代码工作得很好,但是当我尝试添加派生(Show, Read)以便Haskell自动编写代码来读取和写入这种类型的元素时,它会抛出错误。这就是我想做的。Lit Float deriving(Show, Read)
我得到一个错误,读取错误:解析错误输入'|',现在添加表达式表达式行不工作。有人能指出这里的错误是什么吗?
deriving
子句必须在完整的类型定义之后:
data Expression = Lit Float
| Add Expression Expression
| Mul Expression Expression
| Sub Expression Expression
| Div Expression Expression
deriving (Read, Show)
在你正在尝试的东西中,大概是
data Expression = Lit Float deriving (Read, Show)
| Add Expression Expression
| Mul Expression Expression
| Sub Expression Expression
| Div Expression Expression
Haskell来到deriving
子句,并假设类型定义已经完成,后面还有其他东西。然后|
字符就没有意义了。
您可以为类型派生实例,或者编写您自己的实例,而不是为该类型的单独构造函数派生实例。