Haskell: ошибка разбора (возможно, неправильный отступ или несоответствующие скобки) с пониманием списка

Я новичок в Haskell и пытаюсь написать простое понимание списка и назначить его переменной. Вот мой :

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

затем, когда я пытаюсь скомпилировать программу с ghc haskell.hs Я получаю следующую ошибку:

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

С уважением!

1 ответов


у вас есть лишний let. Должно быть:

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

это не OCaml, так что вам не нужно let на верхнем уровне.

это может быть немного запутанным, потому что более старые версии GHCi требуется let для определения имен. Однако это была просто причуда интерпретатора и больше не нужна с современными версиями GHC.