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

Haskell代码报parse error on input ‘Just’错误,求问题排查

解决Haskell代码的Parse Error问题

嘿,我帮你排查出两个导致编译错误的问题啦:

1. 模式匹配的括号缺失

你写的apply s Var c是错误的——Var是Type的构造函数,当你要匹配Var String类型的值时,必须给它加上括号,写成apply s (Var c)。不然Haskell会把Var当成一个独立的函数参数,而不是Type构造函数的应用,这会直接导致解析逻辑混乱。

2. Case表达式的缩进问题

Haskell对缩进要求非常严格,case分支里的Nothing和Just行必须保持一致的缩进级别,不然编译器会识别不出它们属于同一个case的分支,进而抛出解析错误。

修正后的完整代码

data Type = Nat | Bool | App Type Type | Var String deriving (Eq, Show)
type Substitution = [(String, Type)]
apply :: Substitution -> Type -> Type
apply s Nat = Nat
apply s Bool = Bool
apply s (Var c) = case lookup s c of
    Nothing -> Var c
    Just v  -> v

额外小优化

你原来的(Var c)可以直接写成Var c,构造函数应用不需要额外括号,这样代码会更简洁清爽~

内容的提问来源于stack exchange,提问作者user2020493

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:45:52