[["aaaaabaa"],["aaaabaaa"],["aaabaaaa"]]というリストを数字に変換したいため下記のようなコードを書きました。
mainを実行すると
*** Exception: test.hs:(18,1)-(19,57): Non-exhaustive patterns in function change_number2
というエラーが吐かれました。
おそらくchange_number2の引数[[String]]と[["aaaaabaa"],["aaaabaaa"],["aaabaaaa"]]の型が合っていないためエラーが吐かれたのだと予想するのですが、なぜこのようなエラーになるのか教えてください
haskell
1--数字に変換 2change_number::[String]->[Int] 3change_number []=[] 4change_number (x:xs) 5 |x==['a'] = 1:change_number xs 6 |x==['b'] = 2:change_number xs 7 |otherwise = 3: change_number xs 8--リストごとに数字に変換 9change_number2::[[String]]->[[Int]] 10change_number2 [[]]=[[]] 11change_number2 [x,y]=change_number x : change_number2 [y] 12 13main :: IO() 14main = do 15 handle <- openFile "sample.txt" ReadMode 16 text <- hGetContents handle 17 let ls = lines text --1行ずつ書き出し 18 print ls 19 --["aaaaabaa","aaaabaaa","aaabaaaa"] 20 let text2=[[y]|y<-ls] 21 print text2 22 --[["aaaaabaa"],["aaaabaaa"],["aaabaaaa"]] 23 let number= change_number2 text2 24 print number 25 hClose handle
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。