2013-08-07 11 views
6

Jestem nowym użytkownikiem Haskell i staram się napisać prostą listę ze zrozumieniem i przypisać ją do zmiennej. Oto mój plik haskell.hs:Haskell: błąd analizy (ewentualnie nieprawidłowe wcięcie lub niedopasowane nawiasy) ze zrozumieniem listy

--find all multiples of 3 and 5 under 1000 
multiples :: [Int] 
let multiples = [x | x <- [1..1000], (x `mod` 5 == 0) || (x `mod` 3 == 0)] 

wtedy, gdy próbuję skompilować program z ghc haskell.hs pojawia się następujący błąd:

haskell.hs:12:1: 
    parse error (possibly incorrect indentation or mismatched brackets) 

Pozdrawiam!

Odpowiedz

9

Masz dodatkową let. Powinno być:

multiples :: [Int] 
multiples = [x | x <- [1..1000], (x `mod` 5 == 0) || (x `mod` 3 == 0)] 

To nie jest OCaml, więc nie trzeba let na najwyższym poziomie.

Może to być nieco mylące, ponieważ starsze wersje GHCi wymagały oznaczenia nazw let. Jednak był to po prostu dziwaczny interpreter i nie jest już potrzebny w nowoczesnych wersjach GHC.

+0

aha! Dzięki za to. Kompilator na pewno nie jest jednak wybaczający! :( – gideon

Powiązane problemy