我必须错过一些东西,但我不明白为什么这个人为的例子不起作用:
test1 :: Int
test1 = let g = \s -> s + s
f = \u -> let h = \t -> t + t
h' = \v -> v + v
in g (h (h' u))
in f 1
ghci > 输入“h”时解析错误
但是,这个等效的部分是好的:
test2 :: Int
test2 = let g = \s -> s + s
f = \u -> let h = \t -> t + t; h' = \v -> v + v
in g (h (h' u))
in f 1
我相信这是我的语法问题,但我在 test1 中看不到任何错误。谢谢。
编辑:感谢您指出找到问题的正确方法。原来与 vim-haskellConceal 插件有关。我将代码复制粘贴到另一个编辑器中,然后切换回 vim 并注意到嵌套的 let-in 块中有不同的缩进。删除该插件后一切正常。
编辑:我应该停止指责这个插件,因为我简要阅读了它的代码,没有发现任何不合适的地方。也许vim7.3中的“隐藏”功能是根本原因。但我宁愿去我温暖舒适的床...