2013-08-07 25 views
6

Ben Haskell için yeni ve basit bir liste anlama yazmak ve bir değişkene atamak çalışıyorum ile ayrıştırma hatası (muhtemelen yanlış girinti veya uyumsuz parantez). Ben ghc haskell.hs ile program derlemeye çalıştığınızda sonraHaskell: Liste anlama

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

aşağıdaki hatayı alıyorum: İşte benim haskell.hs dosyasıdır

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

Saygılar!

cevap

9

Ek bir let var. Olmalıdır:

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

Bu OCaml değil, bu yüzden üst düzeyde let gerekmez. GHCi eski sürümleri isimlerini tanımlayan bir let gerekli çünkü

Bu biraz kafa karıştırıcı olabilir. Bununla birlikte, bu sadece yorumcunun tuhafıydı ve modern GHC sürümleriyle artık gerekli değildi.

+0

aha! Bunun için teşekkürler. Derleyici kesinlikle olsa affetmez! :( – gideon