Haskell и Vim: правилен отстъп

Потърсете „vim haskell indent“ на SO. Има много отговори за това как да конфигурирате Vim за Haskell отстъп. Никой от тях наистина не "работи". Те не предоставят код, както се препоръчва от уики страницата за отстъп на Haskell. Например подравняване на изрази в do или let блок, = и | на тип данни и т.н.

Съществува ли решение на Vim, което генерира код като wiki?


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


Отговори (1)


Това може да не е отговорът, който търсите, но има начин да следвате wiki ръководството за отстъпи и да сте съвместими с повечето редактори.

Например do-блокове

Вместо

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