Haskell:使用列表解析解析错误(可能是错误的缩进或括号不匹配)

时间:2013-08-07 18:38:21

标签: haskell

我是Haskell的新手,我正在尝试编写一个简单的列表理解并将其分配给变量。这是我的haskell.hs文件:

--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 个答案:

答案 0 :(得分:9)

你有一个额外的let。它应该是:

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

这不是OCaml,因此您不需要顶级let

这可能有点令人困惑,因为旧版本的GHCi需要let来定义名称。然而,这只是翻译的一个怪癖,现代GHC版本不再需要了。