当我尝试在GHCi中的多行上定义函数时,我正在学习Haskell并继续得到这些缩进错误。这是尝试重新定义elem
函数:
λ: :{
| let elem' x xs
| | null xs = False
| | x == head xs = True
| | otherwise = elem' x (tail xs)
| :}
<interactive>:15:5: error:
parse error (possibly incorrect indentation or mismatched brackets)
=
标志是否需要对齐?
答案 0 :(得分:2)
你需要进一步缩进警卫。如果您将它们留在与elem'
名称相同的缩进处,GHC(i)将尝试将它们解析为let
- 块中的其他定义,而不是{{1}的定义的一部分}}:
elem
如果你使用GHC 8或更高版本,你不需要let elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
来定义GHCi中的内容,所以这个(let
和:{
之间,如前所述)将只是工作:
:}
答案 1 :(得分:0)
launch.cpp
像这样缩进
let
是一个let elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
,有四个条目,就像
let
如果你想继续上一个条目而不是开始一个新条目,你应该更多地缩进它。源文件和GHCi中的规则相同。缩进规则在开始时可能看起来有点神秘,但它实际上是fairly simple。