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

Haskell类实例定义中f _ = False的必要性?移除后结果一致存疑

关于Haskell代码中冗余行的解释

这行f _ = False完全是冗余的,没必要添加,移除后结果一致的原因如下:

  • 你的类型定义data A = B | C deriving(Eq)限定了A类型只有B和C两个可能的取值,不存在其他情况。
  • 第一个函数定义f x = x == C已经覆盖了所有输入场景:
    • 当输入为C时,C == C返回True;
    • 当输入为B时,B == C返回False。
  • Haskell的模式匹配遵循从上到下依次匹配的规则,第一个定义里的x是通配模式,可以匹配所有A类型的值,因此后面的f _ = False永远不会被执行到,移除它对程序逻辑没有任何影响。

哪怕后续给A类型新增构造器(比如添加D),f x = x == C依然能正确处理所有情况——新构造器和C比较会返回False,和保留那行冗余代码的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:40:27