You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:30:58