我在 Haskell 中有一个 2D 列表[[Int]]
,我想检查两件事:
- 列表是否具有与列相同的行数
- 行是否具有相同数量的元素
例如:
[[1,2,3], [1,55,9]]
具有与列相同的行数 - 这里为 2 - 每行具有相同数量的元素,即 3。
但
[[1,2], [1,55], [4,7]]
尽管行数和列数不相等,即 3r 2c,但每行中的元素数相同。
另一个例子:
[[1,2], [1,55], [4,7,8]]
行数与列数都不相同,每行的元素数也不相同。
实际上第1步包括第2步,对吗?
我的尝试:
所以到目前为止我尝试的是:
listIsEqual :: [[Int]] -> Bool
listIsEqual myList = (all (\x -> length x == (length myList)) )
现在我收到以下错误消息:
Couldn't match expected type `Bool' with actual type `[a0] -> Bool'
In the return type of a call of `all'
Probable cause: `all' is applied to too few arguments
In the expression: (all (\ x -> length x == (length myList)))
In an equation for `listIsEqual':
listIsEqual myList = (all (\ x -> length x == (length myList)))
谁能告诉我问题出在哪里?
还有其他方法可以解决这个问题吗?