我正在尝试在Haskell中声明一个不可变的变量:
let a = [1, 2]
main = print $ sum a
但声称
parse error (possibly incorrect indentation)
这是怎么回事?
答案 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
中的某些经过测试的表达式转换为实际的源文件。
let
。 ghci和main
在IO
monad中工作,所以你可以在ghci中写出类似let a = [1,2]
的内容。