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

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

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


person Ana    schedule 24.12.2011    source источник


Ответы (1)


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

Например, делать блоки

Вместо

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

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

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

person shang    schedule 24.12.2011
comment
Шанг, на данный момент я подозреваю, что все, кто использует vim, соглашаются на этот компромисс. Я уже давно делаю эту вариацию. - person Ana; 27.12.2011
comment
Это не обязательно компромисс. За исключением версии where, это стиль, который предпочитают мои глаза (и, с небольшими вариациями, всегда был). - person luqui; 04.01.2012