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

Haskell如何编写除(0,0)外其他输入返回空列表的函数?

解决Haskell函数模式匹配的解析错误问题

你遇到的错误是因为Haskell的模式匹配语法不允许在模式里直接使用逻辑表达式(比如not)。模式只能用来匹配具体的值、变量或者构造器,不能做条件判断。

要实现你需要的功能,有两种常用的正确写法:

方法一:模式匹配+通配符

先明确匹配(0,0)的情况,剩下的所有情况用通配符_匹配,直接返回空列表:

-- 可根据实际参数调整类型,示例包含第一个元组参数和其他参数
function :: (Int, Int) -> a -> [b]
function (0, 0) otherParams = -- 在这里填写第一个参数为(0,0)时的返回内容
function _ _ = []

方法二:使用守卫(Guard)

如果需要更灵活的条件判断,可以用守卫检查参数是否不等于(0,0):

function :: (Int, Int) -> a -> [b]
function (x, y) otherParams
  | (x, y) /= (0, 0) = []
  | otherwise = -- 在这里填写(0,0)对应的返回内容

总结一下:模式是用来“解构”输入值的,条件判断要交给守卫或者函数体逻辑处理,这样就不会出现解析错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:52:34