Я пытаюсь объявить локальные переменные (это правильный термин в случае haskell?) В haskell, используя where и let-in clauses. Однако всякий раз, когда мои статьи длиннее одной строки я всегда получаю некоторые ошибки синтаксического анализа:Правильный синтаксис let ... in и where clauses в Haskell
> letExample :: Int -> Int
> letExample 0 = 0
> letExample n =
> let one = 1
> four = 4
> eight = 8
> in one*four*eight
При попытке загрузить код выше в GHCI я получаю следующее сообщение об ошибке:
letexample.lhs:4:33:
parse error in let binding: missing required 'in' Failed, modules loaded: none.
I получить следующее сообщение об ошибке при попытке загрузить код ниже:
whereexample:5:57: parse error on input ‘=’
Failed, modules loaded: none.
код:
> whereExample :: Int -> Int
> whereExample 0 = 0
> whereExample n = one * four * eight
> where one = 1
> four = 4
> eight = 8
Каков правильный способ использования let и where в вышеуказанных случаях?
Ваш размещенный код смешивает вкладки и пробелы, GHC обрабатывает вкладки как 8 пробелов, и это прерывает отступ. Я рекомендую включить предупреждения '-Wall', чтобы это сообщалось компилятором, поэтому вы знаете, что что-то не так. Простое решение - избежать вкладок. Для получения дополнительных решений см. Http://dmwit.com/tabs/ – chi
** Никогда ** смешивайте вкладки и пробелы. Он разбивает код на всех языках, где отступы значительны. Проверьте настройки редактора и всегда используйте только вкладки или только пробелы (последнее обычно предпочтительнее). – Bakuriu
И для записи эти примеры, отображаемые на StackOverflow, имеют точно правильный макет и синтаксис. –