ファイルの内容を取得し、それをフォームのリストに変換しています。
[("abc", 123), ("def", 456)]
readFile、行、および単語を使用します。
今のところ、結果のリストをタイプIO [(String、Int)]に変換することができます。
私の問題は、次のような関数を作成しようとすると、次のようになります。
check x = lookup x theMap
このエラーが発生しますが、解決方法がよくわかりません。
Couldn't match expected type `[(a0, b0)]'
with actual type `IO [(String, Int)]'
In the second argument of `lookup', namely `theMap'
theMapは本質的にこれです:
getLines :: String -> IO [String]
getLines = liftM lines . readFile
tuplify [x,y] = (x, read y :: Int)
theMap = do
list <- getLines "./test.txt"
let l = map tuplify (map words list)
return l
そして、ファイルの内容は次のとおりです。
abc 123
def 456
誰かが私が間違っていることを説明したり、より良い解決策を教えてもらえますか?私は数時間前にモナドをいじり始めたばかりで、途中でいくつかのバンプに遭遇しています。
ありがとう