Здравствуйте!
В YAHT есть простой пример — функция считывания списка ввыодимых пользователем строк:
askForWords = do
putStrLn "Please enter a word:"
word <- getLine
if word == ""
then return []
else return (word : askForWords )
Он не работает
В принципе, вполне логично:
askForWords имеет тип IO [String]
word имеет тип String
оператор (
имеет тип a->[a]->[a]
Код работает, если его слегка подправить:
askForWords = do
putStrLn "Please enter a word:"
word <- getLine
if word == ""
then return []
else do
w <- askForWors
return (word : w)
Вопрос: это ошибка в YAHT, или я чего-то недопонимаю?