0

I'm trying to declare an immutable variable in Haskell:

let a = [1, 2]
main = print $ sum a

but it claims

parse error (possibly incorrect indentation)

what's up with that?

4

1 回答 1

14

let不在顶层定义中使用。有几种方法可以纠正您的程序,其中一些是

a = [1,2]
main = print $ sum a

或者

main = do
  let a = [1,2]
  print $ sum a

或者

main = let a = [1,2] in print $ sum a

对于试图let在顶层使用的人来说,通常的混淆来源是当他们试图将一些经过测试的表达式转换ghci为实际的源文件时。

let可以在您在 monad 中工作时使用。ghci 并mainIOmonad 内部工作,因此您可以编写类似let a = [1,2]ghci 的内容。

于 2013-08-26T15:50:47.927 回答