Haskell函数中的非穷举模式带有“otherwise”



我正在使用以下函数:

combinations :: Int -> [a] -> [[a]]
combinations k xs = combinations' (length xs) k xs
  where combinations' n k' l@(y:ys)
          | k' == 0   = [[]]
          | k' >= n   = [l]
          | null l    = []
          | otherwise = Prelude.map (y :) (combinations' (n - 1) (k' - 1) ys) ++ combinations' (n - 1) k' ys 

它适用于我能想到的任何例子,但当我从我的大型项目中的其他函数调用它时,在某些情况下,我会得到一个例外:

Exception: projekt.hs:(34,9)-(38,108): Non-exhaustive patterns in function combinations'

上面的定义有问题吗?是不是漏掉了什么案子?我认为otherwise可以处理任何不属于以前情况的内容。

由于combinations' n k' l@(y:ys)中的l@(x:xs),您缺少案例combinations _ _ []

保护null l将始终是False

相关内容

  • 没有找到相关文章

最新更新