布局陷阱还是GHCi bug?

时间:2014-10-20 11:25:23

标签: haskell ghci

我被一个奇怪的布局"特征" GHCi:

$ cat > problem.hs


l = [6
, 5]

t = do { putStrLn "line1"
; putStrLn "line2" }

将此加载到GHCi中时,我在逗号的行上出现错误parse error (possibly incorrect indentation or mismatched brackets),但在分号行上没有。我的印象是,括号[…]和支撑{…}结构都暂停布局,所以这让我感到惊讶。有人可以判断这是符合Haskell规范的行为,还是仅仅是GHC(i)错误?

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的,花括号暂停布局,但没有其他词法结构。想到这一点的方法是,在该特定词汇位置的唯一目的花括号是暂停布局。没有任何构造可以执行其他操作以及影响布局。

(当然在其他词汇位置使用的花括号完全不同,与记录语法有关。)