Подтвердить что ты не робот

Haskell и Vim: правильный отступ

Найдите "vim haskell indent" на SO. Есть много ответов, как настроить Vim для отступов Haskell. Ни один из них не "работает". Они не предоставляют код, как рекомендуется Haskell wiki page. Например, выравнивание операторов в блоке do или let, = и | типа данных и т.д.

Существует ли решение Vim, которое генерирует код, подобный wiki?

4b9b3361

Ответ 1

Это может быть не тот ответ, который вы ищете, но есть способ, которым вы можете следовать руководству wiki в отступлении и быть совместимым с большинством редакторов.

Например, 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

И так далее...

Я лично начал использовать этот стиль, потому что, как вы уже сказали, ни один редактор не смог бы надежно отложить код в противном случае. Это работает лучше во всех редакторах, так как отступ всегда кратен четырем (или что-то еще, что вы выбираете для базового уровня отступов). Поскольку я использовал этот стиль, я также стал предпочитать этот последовательный уровень отступов визуально, поэтому я бы не стал возвращаться в этот момент, даже если редакторы стали умнее.