GHC 6.12.3 で次のコードをコンパイルする際に問題があり、その理由がわかりません。
function の目的test2
は、整数を使用してリストから文字列要素を取得する関数を返すことです (リストはペアリストの最初のノードから作成されます)。
IO ビットは、IOtest2
を使用する別の関数で使用されるため必要です。
type PairList = [(String, String)]
test1 :: [String] -> Int -> String
test1 list x = list !! x
test2 :: PairList -> IO (Int -> String)
test2 pl = do
f <- [fst x | x <- pl] :: IO [String]
return test1 f
GHCは私にこのエラーを与えます:
Test.hs:8:6:
Couln't match expected type 'IO [String]'
against inferred type '[a]'
In a stmt of a 'do' expression:
f <- [fst x | x <- pl] :: IO [String]
In the expression:
do { f <- [fst x | x <- pl] :: IO [String];
return test1 f }
...