我正在尝试以这种格式打印出整数列表
[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? 谁能指出我在这里做错了什么?