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

Haskell自定义运算符模式匹配实现报错:问题排查求助

Haskell自定义运算符语法错误修正

你的代码报错的核心原因是运算符以前缀形式使用时未添加括号。Haskell语法明确规定:自定义运算符若要作为前缀函数出现在等式左侧,必须用括号包裹;如果采用中缀形式,则直接将运算符放在两个参数中间即可。

正确写法一(前缀形式)

(+|+) :: [a] -> [a] -> [a]
(+|+) [] [] = []
(+|+) (x : _) [] = [x]
(+|+) [] (y : _) = [y]
(+|+) (x : _) (y : _) = [x, y]

正确写法二(中缀形式)

(+|+) :: [a] -> [a] -> [a]
[] +|+ [] = []
(x : _) +|+ [] = [x]
[] +|+ (y : _) = [y]
(x : _) +|+ (y : _) = [x, y]

边界情况验证

  • 双空列表:[] +|+ [] → 返回 []
  • 单非空列表:[1,2] +|+ [] → 返回 [1];[] +|+ ["a","b"] → 返回 ["a"]
  • 双非空列表:[1] +|+ [2,3] → 返回 [1,2]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:27:16