В настоящее время я изучаю Haskell с помощью онлайн-версии Learn You a Haskell, и я прохожу главу 4: Синтаксис в функциях. Просматривая книгу, я дословно кодирую все примеры функций в своем текстовом редакторе (Notepad++) и запускаю их в GHCI.
Самая последняя функция, которую я сделал, начинает меня раздражать (это в разделе «Стража, охрана!» Главы 4).
initials :: String -> String -> String
initials firstname lastname = [f] ++ "." ++ [l]
where (f:_) = firstname
(l:_) = lastname
Это мой код, а также код, показанный в книге. Всякий раз, когда я пишу это сам, GCHI всегда выдает ошибку синтаксического анализа. Однако, когда я копирую/вставляю его из книги, он работает. Самое смешное, что нет никакой разницы. Я скопировал/вставил код поверх своего, и между ними не было буквально никакой разницы. Я делал это несколько раз, так что я уверен, что не заблуждаюсь.
Почему это происходит? Как я могу это исправить? Сначала я просмотрел его, но все, что я вижу, это то, что два утверждения после «где» должны быть выровнены в одном столбце. Я делаю это. Это все еще не работает.
Language Menu/Tab Settings
, в правой полосе прокрутки выберите haskell, затем снимите флажок «Использовать значение по умолчанию» и установите флажок «Заменить пробелом». Обычно мне нравится иметь размер вкладки равным 2. Это изменит его, поэтому при автоматическом отступе будут использоваться пробелы. - person paul   schedule 06.06.2013