以下方法不断出现non-exhaustive pattern
异常:
groups::[Int]->[[Int]]
groups ls=go ls [] [] where
go [] small big=small:big
go (x:xs) (y:ys) big | x==y = go xs (x:y:ys) big
| otherwise = go xs [] ((y:ys):big)
我要执行的操作是:给定数组[1,2,3,3,4,4,4,1]
,我想将其拆分为连续重复的列表:[[1],[2],[3,3],[4,4,4],[1]]
。
我正在使用2
个累加器,一个累加器用于当前的成形列表,另一个用于较大的累加器。
我不能同时将wild-card
和big
都不能用于small
列表,因为唯一的例外情况是输入列表为空。
答案 0 :(得分:1)
您尚未考虑类似go (x:xs) [] big
之类的问题;唯一允许第二个参数为空列表的情况也要求第一个参数也为空列表。
go [] small big=small:big
go (x:xs) (y:ys) big | x==y = go xs (x:y:ys) big
| otherwise = go xs [] ((y:ys):big)
go (x:xs) [] big = ???