在Haskell中定义变量

时间:2013-08-26 15:48:41

标签: haskell

我正在尝试在Haskell中声明一个不可变的变量:

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

但声称

parse error (possibly incorrect indentation)

这是怎么回事?

1 个答案:

答案 0 :(得分: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中的某些经过测试的表达式转换为实际的源文件。

当您在monad中工作时,可以使用

let。 ghci和mainIO monad中工作,所以你可以在ghci中写出类似let a = [1,2]的内容。