![](/img/trans.png)
[英]How to check if length of a list is not equal to length of a list within a list in haskell
[英]How can I check that the length of a list of custom data types in Haskell?
我正在制作一个仅使用 9 x 9 网格的简单数独程序。 为此,我有一个函数来检查它是 9 x 9 并检查以确保输入的值是Just Num
的。
这是我找到的最接近的解决方案,我认为问题出在我认为的模式匹配中(如果我错了,请纠正我),这是因为它可以编译但存在逻辑错误,即在给出时返回 False not True一个完美的测试用例。 无论如何,这是代码转储:D
type Cell = Maybe Int
type Row = [Cell]
data Sudoku = Sudoku [Row]
deriving ( Show, Eq )
rows :: Sudoku -> [Row]
rows (Sudoku ms) = ms
isSudoku :: Sudoku -> Bool
isSudoku (Sudoku [[cs]]) = length [cs] == 9 && length cs == 9
isSudoku (Sudoku _) = False
非常感谢您提供的任何建议!
[x]
作为模式只会匹配一个单例列表(列表中只有一个元素)。
要执行嵌套列表检查,请执行
isSudokuList cs = length cs == ... &&
and [length c == ... | c <- cs]
您必须对其进行调整以适合您的课程类型。
你也可以定义
niner [a,b,c,d,e,f,g,h,i] = True
.......
并使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.