我被一个奇怪的布局"特征" 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)错误?
答案 0 :(得分:1)
正如评论中所讨论的,花括号暂停布局,但没有其他词法结构。想到这一点的方法是,在该特定词汇位置的唯一目的花括号是暂停布局。没有任何构造可以执行其他操作以及影响布局。
(当然在其他词汇位置使用的花括号完全不同,与记录语法有关。)