Я новичок в Haskell и после запуска ghci
попробовал:
f x = 2 * x
и я получил:
<interactive>:1:4: parse error on input `='
чего я не понимаю.
Как ни странно, раньше это работало хорошо. Я полагаю, что неправильно сконфигурировал Haskell. Переустановка ghc6 не решает проблемы.
Для информации я использую Ubuntu 10.4, а версия ghc6 - 6.12.1-12.
let
в своих примерахLYAH
ли в настоящее время ужеlet
. Но продолжение. ВLYAH
я прочиталaddThree :: Int -> Int -> Int -> Int
(новая строка),addThree x y z = x + y + z
но только второй работаетGHCi
сlet
. Зачем?Когда вы вводите исходный файл Haskell,
правильно.
Когда вы вводите непосредственно в ghci, вам нужно вводить
let
в начале строки:источник
let
. Думайте о GHCi как о большомlet ... in ...
заявлении.Хорошее практическое правило использования ghci состоит в том, что любой вводимый вами код должен соответствовать семантике do-block; то есть синтаксически вы можете предположить, что вы программируете в монаде ввода-вывода (если это новая терминология, не волнуйтесь! Я настоятельно рекомендую прочитать это руководство ).
Этот ответ иллюстрирует этот момент на примере и может дать более подробное представление о природе IO и ghci.
источник
let
; Я подумал: «Черт возьми, почему я должен использоватьlet
», а потом прочитал это и получил просветление.Начиная с GHC 8.0.1 это больше не будет генерировать ошибку.
источник