【问题标题】:Error: Non-exhaustive patterns in Haskell错误:Haskell 中的非详尽模式
【发布时间】:2016-03-04 14:16:36
【问题描述】:

我有一些处理列表列表(表示矩阵)的代码。每个单元格都是NB。我想用每行的Ns 的数量来表示矩阵。例如:[[B,B,N],[N,N,N]][1,3] 表示。

这是我的代码:

data Case = B|N deriving (Show, Eq)
type Grille =[[Case]]

g0,g1 :: Grille
g0 = [[B,B,B,B,B,B,N],[B,B,N,B,N,B,B],[N,B,N,N,N,N,N],[B,B,B,N,N,B,N],[N,N,N,B,B,B,B],[B,B,B,N,N,B,N]]
g1 = [[B,B,B,B,B,B,B],[B,B,N,N,N,B,B],[B,B,N,N,N,N,N],[B,B,B,N,N,N,N],[N,N,N,B,B,B,B],[B,B,B,N,B,B,B]]

projH :: Grille -> [Int]
projH [[]] = []
projH (x:xg) = testCase(x) ++ projH(xg)

testCase :: [Case] -> [Int]dans une ligne
testCase [] = [0]
testCase (x:xs) 
    | x == N = [head(testCase(xs))+1]
    | otherwise = testCase(xs)

问题出在函数projH 中,我显然缺少一个模式,但我确实使用[[],...]testCase 函数和[[]] 案例来处理这种情况。我不知道为什么它会抛出这个错误:

*Main> projH g0
[1,2,6,3,3,3*** Exception: devoir.hs:(17,1)-(18,39): Non-exhaustive patterns in function projH

【问题讨论】:

    标签: haskell design-patterns


    【解决方案1】:
    projH [] = []
    

    代替你的

    projH [[]] = []
    

    由于您编写的案例已通过分配x = []xg = [] 由另一个语句处理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多