0

我不断收到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列表也不用于smallone ,因为唯一不寻常的情况是空输入列表。

4

1 回答 1

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 = ???
于 2019-03-28T15:48:24.527 回答