Joh*_*ohn 4 arrays haskell equality list
我[[Int]]在Haskell中有一个2D列表,我想检查两件事:
例如:
[[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)) )
Run Code Online (Sandbox Code Playgroud)
现在我得到以下错误消息:
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)))
Run Code Online (Sandbox Code Playgroud)
谁能告诉我问题出在哪里?
还有其他方法可以解决这个问题吗?
GHC的错误消息并不总是最有帮助的,但在这种情况下,它是正确的.
可能原因:"all"适用于太少的参数
事实上,你忘记了第二个论点all:
listIsEqual myList = all (\x -> length x == length myList) myList
^^^^^^
Run Code Online (Sandbox Code Playgroud)