Ошибка ошибки анализа Haskell на входе `= '

Я новичок в Haskell, и после запуска ghci я попробовал:

f x = 2 * x

и я получил:

<interactive>:1:4: parse error on input `='

который я не понимаю.

Странно, это сработало задолго до этого. Полагаю, что я неправильно сконфигурировал Хаскелла. Переустановка ghc6 не решает проблему.

Для информации, я использую Ubuntu 10.4, а версия ghc6 - 6.12.1-12

Ответ 1

В 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

Ответ 2

При вводе в исходный файл Haskell

f x = 2 * x

является правильным.

При вводе непосредственно в ghci вам нужно ввести let в начале строки:

let f x = 2 * x

Ответ 3

Хорошим правилом для использования ghci является то, что любой введенный вами код должен соответствовать семантике do-block; то есть вы можете предполагать синтаксически, что вы программируете в монаде IO (если это новая терминология, не волнуйтесь! Я бы настоятельно рекомендовал прочитать это учебник).

Этот ответ иллюстрирует этот пример примером и может обеспечить более эффективное понимание характера IO и ghci.

Ответ 4

Начиная с GHC 8.0.1 это больше не приведет к ошибке.