6

我是 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)

问候!

4

1 回答 1

10

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

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

这不是 OCaml,所以你不需要let在顶层。

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

于 2013-08-07T18:42:07.067 回答