我是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)
问候!
答案 0 :(得分:9)
你有一个额外的let
。它应该是:
multiples :: [Int]
multiples = [x | x <- [1..1000], (x `mod` 5 == 0) || (x `mod` 3 == 0)]
这不是OCaml,因此您不需要顶级let
。
这可能有点令人困惑,因为旧版本的GHCi需要let
来定义名称。然而,这只是翻译的一个怪癖,现代GHC版本不再需要了。