Haskell: ошибка синтаксического анализа при вводе 'putStrLn'

Я только что написал свою первую программу на Haskell, но есть ошибка, которую я не могу понять. Я думаю, что это правильно, потому что я просто написал это как пример из книги. Может ли кто-нибудь помочь мне, пожалуйста?

main = do
    putStrLn "Hello, what's your name?"
    name <- getLine
    putStrLn ("Hey" ++ name ++ ", nice to meet you!")

Сообщение об ошибке:

ошибка синтаксического анализа при вводе 'putStrLn'

Это странно.


person Mel    schedule 02.06.2013    source источник


Ответы (1)


Хотя это невозможно сказать по вашему опубликованному коду, потому что SO преобразует табуляцию в пробелы, по крайней мере, некоторое время, проблема, вероятно, в том, что вы вводите буквальный символ табуляции перед putStrLn вместо четырех пробелов, как вы делали для двух других строк в вашем do блок или наоборот.

Все операторы в блоке do должны начинаться с одного и того же пробела, а не просто визуально выстраиваться в линию. Если вы используете текстовый редактор, который может отображать литеральные вкладки особым образом, настройте его таким образом; это избавит вас от некоторых головных болей.

person Cairnarvon    schedule 02.06.2013
comment
Да, это проблема. Я действительно не заметил этого, когда я пишу это. Ваш ответ действительно полезен. Спасибо! - person Mel; 02.06.2013
comment
@Mel: На самом деле вы можете смешивать табуляцию и пробелы в различных комбинациях при отступе нескольких строк; здесь важно то, что отчет Haskell указывает, что символ табуляции считается за 8 пробелов, а не за 4, поскольку вы, кажется, настроили свой редактор. - person yatima2975; 04.06.2013