我是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)
问候!
你有一个额外的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版本不再需要了.