Haskell和Vim:正确的缩进

时间:2011-12-24 00:50:00

标签: haskell indentation

在SO上搜索“vim haskell indent”。关于如何为Haskell缩进配置Vim有很多答案。他们都没有真正“工作”。它们不提供Haskell indentation wiki page建议的代码。例如,do或let块中的语句对齐,数据类型的=|等。

是否存在生成wiki等代码的Vim解决方案?

1 个答案:

答案 0 :(得分:7)

这可能不是您正在寻找的答案,但有一种方法可以遵循缩进维基指南并与大多数编辑兼容。

例如,do-blocks

而不是

myFunc x = do y <- bar
              return $ x + y

你可以像这样缩进

myFunx x = do
    y <- bar
    return $ x + y

在缩进维基中明确提到这是一个可接受的替代方案。

以同样的方式,您可以格式化数据类型

data FooBar
    = Foo
    | Bar
    | Asdf

卫兵

myFunc x
    | x < 0     = 0
    | otherwise = x

其中子句

myFunc x = x + y + c where
    y = x + 5
    c = x * y

等等......

我个人开始使用这种风格,因为,就像你说的那样,没有编辑可以可靠地缩进代码。这在所有编辑器中都能更好地工作,因为缩进始终是四的倍数(或者您为基本缩进级别选择的任何其他内容)。当我使用这种风格时,我也开始在视觉上更喜欢这种一致的缩进级别,所以即使编辑变得更聪明,我也不会回到这一点。