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

Tha*_*tta 6 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)]
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试编译程序时,ghc haskell.hs我收到以下错误:

haskell.hs:12:1:
    parse error (possibly incorrect indentation or mismatched brackets)
Run Code Online (Sandbox Code Playgroud)

问候!

Tik*_*vis 9

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

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

这不是OCaml,因此您不需要let在顶层.

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