Я изучаю Haskell через, надлежащим образом, книгу Learn You a Haskell. До section on guards ни один из примеров кода не был отступом, и мне интересно, как я должен правильно отложить мой код Haskell в будущем.Настройка по умолчанию в Haskell Mode по умолчанию OK?
В книге отступы защитных линий в функции bmiTell
с четырьмя пробелами:
bmiTell :: (RealFloat a) => a -> String
bmiTell bmi
| bmi <= 18.5 = "You're underweight, you emo, you!"
| bmi <= 25.0 = "You're supposedly normal. Pffft, I bet you're ugly!"
| bmi <= 30.0 = "You're fat! Lose some weight, fatty!"
| otherwise = "You're a whale, congratulations!"
Using Haskell Mode's default indentation settings, я могу переключаться между нулевыми пространствами (что дает ошибку компиляции) и два пространства (которые, кажется, работает хорошо) используя TAB и S-TAB:
bmiTell :: (RealFloat a) => a -> String
bmiTell bmi
| bmi <= 18.5 = "You're underweight, you emo, you!"
| bmi <= 25.0 = "You're supposedly normal. Pffft, I bet you're ugly!"
| bmi <= 30.0 = "You're fat! Lose some weight, fatty!"
| otherwise = "You're a whale, congratulations!"
The docs сделать это, кажется, что я не должен нуждаться в т o делать что-либо в моей конфигурации Emacs, чтобы получить рекомендуемые настройки отступов, но после небольшого Googling я не смог найти примеры кода с двухпозиционным отступом. Поиск «Руководства по стилю Haskell» дает this, который рекомендует использовать четырехпозиционный отступ, используемый в книге.
Поведение отступов по умолчанию в Haskell Mode соответствует тому, как люди обычно форматируют свой код Haskell? Если нет, как мне изменить конфигурацию Emacs, чтобы она соответствовала самой популярной схеме отступа?
Редактировать: По-видимому, в предыдущих примерах я был некорректен относительно отступов. first use of an if
statement отступ, как это:
doubleSmallNumber x = if x > 100
then x
else x*2
Но я не могу показаться, чтобы получить что-нибудь, что выглядит, что с помощью TAB и S-TAB в моей текущей настройке.
Установите значение 4: '(setq haskell-indent-spaces 4)'. – Sibi
@Sibi: обратите внимание, что он доступен как [переменная настройки] (https://www.gnu.org/software/emacs/manual/html_node/emacs/Easy-Customization.html), поэтому вы можете использовать инфраструктуру настройки вместо устанавливая его непосредственно через 'setq'. – Cactus
Я очень предпочитаю два пространства, потому что я склоняюсь к горизонтальному пространству. Я также отбрасываю ключевое слово 'where' два пробела и привязки в его статье два других. – dfeuer