首页 > 解决方案 > 定义 foldr 变体时出现非详尽模式错误

问题描述

我被要求制作一个类似foldr但具有非空列表的函数,它的工作方式如下foldr1 f [x1,x2...xn] = f x1 (f x2...(f xn-1 xn)...)

所以我这样定义它:

foldr1 f [x] = x
foldr1 f (x:xs) = f x (foldr1 f xs)
foldr1 f _ = undefined

尽管涵盖了所有可能性,但我仍然收到“函数 foldr1 中的非详尽模式”错误。我究竟做错了什么?

标签: haskellfoldnon-exhaustive-patterns

解决方案


推荐阅读