Я пытаюсь напечатать список целых чисел в этом форматеПрименения putStr к каждому элементу списка
[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? Может ли кто-нибудь указать, что я делаю неправильно здесь?
Простейшее изменение: '>> printVector xs' вместо': printVector xs'. – luqui