Jestem nowy w Haskell i po rozpoczęciu ghci
próbowałem:
f x = 2 * x
i uzyskałem:
<interactive>:1:4: parse error on input `='
których nie rozumiem.
O dziwo, wcześniej działało dobrze. Przypuszczam, że źle skonfigurowałem Haskella. Ponowna instalacja ghc6 nie rozwiązuje problemu.
Dla informacji używam Ubuntu 10.4, a wersja ghc6 to 6.12.1-12
let
w swoich przykładachLYAH
ma teraz wspomniećlet
. Ale kontynuacja. WLYAH
czytamaddThree :: Int -> Int -> Int -> Int
(nowa linia),addThree x y z = x + y + z
ale tylko druga wbiegaGHCi
zlet
. Czemu?Kiedy piszesz do pliku źródłowego Haskell,
jest poprawne.
Kiedy piszesz bezpośrednio w ghci, musisz wpisać
let
na początku linii:źródło
let
. Pomyśl o GHCi jako o jednym wielkimlet ... in ...
stwierdzeniu.Dobrą praktyczną zasadą korzystania z ghci jest to, że każdy wprowadzany kod powinien być zgodny z semantyką do-block; to znaczy, możesz składnie założyć , że programujesz w monadzie IO (jeśli jest to nowa terminologia, nie martw się! Gorąco polecam przeczytanie tego samouczka ).
Ta odpowiedź ilustruje ten punkt na przykładzie i może zapewnić bardziej praktyczny wgląd w naturę IO i ghci.
źródło
let
; Pomyślałem „wtf, dlaczego muszę używaćlet
”, a potem przeczytałem to i zostałem oświecony.Począwszy od wersji GHC 8.0.1 nie generowałoby to już błędu.
źródło