Haskell表达式树添加deriving(Show, Read)时出现解析错误求助
问题解决:Haskell表达式树添加deriving报错的原因
你的错误在于把deriving(Show, Read)放错了位置——它不能跟在单个构造器(比如Lit Float)后面,必须放在整个data类型定义的末尾,所有构造器声明完成之后。
正确的代码写法应该是这样:
data Expression = Lit Float | Add Expression Expression | Mul Expression Expression | Sub Expression Expression | Div Expression Expression deriving (Show, Read)
Haskell里,deriving子句是属于整个代数数据类型的配置,不是某个构造器的组成部分。你之前把它贴在Lit Float后面,编译器会把这部分当成Lit构造器的一部分,导致后续的|分隔符完全不符合语法规则,所以才会报parse error on input '|'的错误。
内容的提问来源于stack exchange,提问作者skiboy108
相关产品推荐
相关产品推荐

