この形式で整数のリストを出力しようとしています
[1]
[2]
[3]
したがって、私の関数は整数のリストを取り、次のように IO () を返します。
import System.IO
printVector :: [Integer] -> IO ()
printVector (x:xs) = putStr("[" ++ show(x) ++ "]" ++ "\n") : printVector xs
しかし、ghcは私にエラーを与えます:
lin-test.hs:5:22:
Couldn't match expected type `IO ()' with actual type `[a0]'
In the expression:
putStr ("[" ++ show (x) ++ "]" ++ "") : printVector xs
In an equation for `printVector':
printVector (x : xs)
= putStr ("[" ++ show (x) ++ "]" ++ "") : printVector xs
Failed, modules loaded: none.
これで、関数がリスト全体を実行し、最初の項目 'x' を最初に取り、次に : printVector xs を使用して、リスト内の各項目に同じ putStr 関数を適用して残りのリストを再帰的に呼び出すことを理解しています。
しかし、私の問題はどこにあると思いますか: printVector xs? ここで私が間違っていることを誰かが指摘できますか?