GHCi 中的缩进问题
Indentation problems in GHCi
我正在学习 Haskell,当我尝试在 GHCi 中定义跨多行的函数时,不断出现这些缩进错误。这是重新定义 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)
=
标志是否需要以某种方式对齐?
你需要进一步缩进守卫。如果你让它们与 elem'
名称保持相同的缩进,GHC(i) 将尝试将它们解析为 let
块中的附加定义,而不是 [=14 定义的一部分=]:
let elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
如果您使用的是 GHC 8 或更高版本,则不需要 let
来定义 GHCi 中的内容,所以这个(在 :{
和 :}
之间,和以前一样)将正常工作:
elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
A let
像这样缩进
let elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
是一个有四个条目的 let
,很像
let x1 = ...
x2 = ...
x3 = ...
x4 = ...
如果您想继续上一个条目,而不是开始一个新条目,您应该将其缩进更多。该规则在源文件和 GHCi 中是相同的。缩进规则一开始可能看起来有点神秘,但实际上是 .
我正在学习 Haskell,当我尝试在 GHCi 中定义跨多行的函数时,不断出现这些缩进错误。这是重新定义 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)
=
标志是否需要以某种方式对齐?
你需要进一步缩进守卫。如果你让它们与 elem'
名称保持相同的缩进,GHC(i) 将尝试将它们解析为 let
块中的附加定义,而不是 [=14 定义的一部分=]:
let elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
如果您使用的是 GHC 8 或更高版本,则不需要 let
来定义 GHCi 中的内容,所以这个(在 :{
和 :}
之间,和以前一样)将正常工作:
elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
A let
像这样缩进
let elem' x xs
| null xs = False
| x == head xs = True
| otherwise = elem' x (tail xs)
是一个有四个条目的 let
,很像
let x1 = ...
x2 = ...
x3 = ...
x4 = ...
如果您想继续上一个条目,而不是开始一个新条目,您应该将其缩进更多。该规则在源文件和 GHCi 中是相同的。缩进规则一开始可能看起来有点神秘,但实际上是