2013-08-07 16 views
6

Sono nuovo di Haskell e sto cercando di scrivere una semplice lista di comprensione e assegnarla a una variabile. Ecco il mio file di haskell.hs:Haskell: errore di analisi (eventuale rientro non corretto o parentesi non corrispondenti) con comprensione dell'elenco

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

poi quando provo a compilare il programma con ghc haskell.hs ottengo il seguente errore:

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

saluti!

risposta

9

Hai un extra let. Dovrebbe essere:

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

Questo non è OCaml, quindi non è necessario let al livello superiore.

Questo potrebbe essere un po 'di confusione perché le versioni precedenti di GHCi richiedevano un let per la definizione dei nomi. Tuttavia, questo era solo un capriccio dell'interprete e non è più necessario con le moderne versioni di GHC.

+0

aha! Grazie per questo. Il compilatore certamente non perdona però! :( – gideon

Problemi correlati