GHCi中的压痕问题

时间:2017-04-09 03:16:46

标签: haskell indentation ghci

当我尝试在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)

=标志是否需要对齐?

2 个答案:

答案 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