Ошибка разбора ошибки Haskell на входе'='
Я новичок в Haskell и после запуска ghci
пробовал:
f x = 2 * x
и я получил:
<interactive>:1:4: parse error on input `='
чего я не понимаю.
как ни странно, это хорошо работало раньше. Я полагаю, что я неправильно настроил Haskell. Переустановка ghc6 не решает проблему.
для информации я использую Ubuntu 10.4, а версия ghc6 - 6.12.1-12
4 ответа:
В GHCi 7.x или ниже, вам нужно
let
чтобы определить вещи в нем.Prelude> let f x = x * 2 Prelude> f 4 8
начиная с GHC 8.0.1,привязки верхнего уровня поддерживаются в GHCi, поэтому код OP будет работать без изменений.
GHCi, version 8.0.1.20161213: http://www.haskell.org/ghc/ :? for help Prelude> f x = x * 2 Prelude> f 4 8
при вводе в исходный файл Haskell,
f x = 2 * x
- это правильно.
когда вы вводите непосредственно в ghci, вам нужно ввести
let
в начале строки:let f x = 2 * x
хорошее эмпирическое правило для использования ghci заключается в том, что любой код, который вы вводите, должен соответствовать семантике do-block; То есть вы можете предположить синтаксически что вы программируете в монаде IO (если это новая терминология, не волнуйтесь! Я настоятельно рекомендую прочитать это учебник).
этой ответ иллюстрирует этот момент примером и может обеспечить более глубокое понимание природы IO и ghci.