sudokuElements :: [[BoardElement]] -> [Coords] -> [[BoardElement]]
sudokuElements [[]] _ = [[]]
sudokuElements _ [] = [[]]
sudokuElements ([x]:[[xs]]) (y:[ys])
| ([x]:[[xs]]) == [inputBoardElements] && (y:[ys]) == inputBoardEmpty =
[
(j, i) |
i <- (validVals [x] y),
j <- [y]
] : sudokuElements [[xs]] [ys]
答案 0 :(得分:0)
我想您可以通过将sudokuElements _ _ = []
添加到定义的 end 来解决此问题,因此:
sudokuElements ([x]:[[xs]]) (y:[ys])
| ([x]:[[xs]]) == [inputBoardElements] && (y:[ys]) == inputBoardEmpty =
[
(j, i) |
i <- (validVals [x] y),
j <- [y]
] : sudokuElements [[xs]] [ys]
sudokuElements _ _ = []
对于缺失的模式,请看一下chepners评论,他解释得很清楚:
大多数模式都缺失了。例如,从您的第一个等式判断,您似乎认为
[[]]
是[[BoardElement]]
类型的空列表。它不是;它是一个包含单个空列表的列表。[]
是[[BoardElement]]
类型的空列表,就像任何类型[a]
的列表一样(无论是什么)。 我们在这里解决你的家庭作业;)