4

Haskellに 2D リストがあり、[[Int]]2 つのことを確認したい:

  1. リストの行数が列数と同じかどうか
  2. 行の要素数が同じかどうか

例えば:

[[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)))

誰が問題がどこにあるか教えてもらえますか?

この問題を解決する他の方法もありますか?

4

3 に答える 3