2013-08-07 4 views
6

Ich bin neu bei Haskell und versuche, ein einfaches Listenverständnis zu schreiben und es einer Variablen zuzuordnen. Hier ist meine haskell.hs Datei:Haskell: Parse-Fehler (möglicherweise falsche Einrückung oder nicht übereinstimmende Klammern) mit Listenverständnis

--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)] 

dann, wenn ich versuche, das Programm zu kompilieren mit ghc haskell.hs bekomme ich folgende Fehlermeldung:

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

Grüße!

Antwort

9

Sie haben eine zusätzliche let. Es sollte sein:

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

Dies ist nicht OCaml, so brauchen Sie nicht let auf der obersten Ebene.

Dies könnte ein wenig verwirrend sein, da ältere Versionen von GHCi eine let für die Definition von Namen erforderten. Dies war jedoch nur eine Eigenart des Interpreters und wird bei modernen GHC-Versionen nicht mehr benötigt.

+0

aha! Danke dafür. Der Compiler ist sicherlich nicht nachsichtig! :( – gideon

Verwandte Themen