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
相关产品推荐
相关产品推荐

