リストのリスト内のすべての要素が同じ長さであるかどうかを知るために、haskell で関数を作成しようとしています。(以前の投稿で回答を検索しましたが、どれも機能しません)。
sameLength :: [[t]] -> String
sameLength [] = "Empty list"
sameLength [[items]]
| and $ map (\x -> length x == (length $ head [[items]])) [[items]] = "Same length"
| otherwise = "Not the same length"
問題は、それが機能しないことです:
*Main> :l test.hs
[1 of 1] Compiling Main ( test.hs, interpreted )
Ok, modules loaded: Main.
*Main> sameLength []
"Empty list"
*Main> sameLength [[1,2],[3,4]]
"*** Exception: test.hs:(2,1)-(5,39): Non-exhaustive patterns in function sameLength
*Main> sameLength [[1,2]]
"*** Exception: test.hs:(2,1)-(5,39): Non-exhaustive patterns in function sameLength
どこに問題があるのか よくわかりません。パラメータが空のリストである場合とそうでない場合を扱います。私が間違っている ?私は何か見落としてますか ?
ご協力いただきありがとうございます :)