Пожалуйста, терпите меня, поскольку я новичок в функциональном программировании и Haskell. Я пытаюсь написать функцию в Haskell, которая принимает список целых чисел, печатает заголовок указанного списка, а затем возвращает конец списка. Функция должна иметь тип [Целое число] -> [Целое число]. Чтобы дать немного контекста, Я пишу интерпретатор, и эта функция вызывается, когда соответствующая команда ищется в ассоциативном списке (ключ - это команда, значение - функция).
Вот код, который я написал:
dot (x:xs) = do print x
return xs
Компилятор дает следующее сообщение об ошибке:
forth.hs:12:1:
Couldn't match expected type `[a]' against inferred type `IO [a]'
Expected type: ([Char], [a] -> [a])
Inferred type: ([Char], [a] -> IO [a])
In the expression: (".", dot)
Я подозреваю, что именно вызов print в функции точки является причиной того, что предполагаемый тип является IO [a]. Есть ли способ игнорировать возвращаемый тип print, поскольку все, что мне нужно вернуть, - это конец списка, передаваемого в точку.
Заранее спасибо.