我正在通过《Learn You a Haskell》这本书来学习 Haskell。直到关于 guards 的部分,没有一个代码示例被缩进,我想知道我应该如何正确缩进我的 Haskell 代码。
本书将函数中的警戒线缩进了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!"
使用 Haskell 模式的默认缩进设置TAB,我可以使用and在零空格(这会产生编译错误)和两个空格(似乎工作正常)之间切换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!"
这些文档看起来好像我不需要在我的 Emacs 配置中做任何事情来获得推荐的缩进设置,但是经过一番谷歌搜索后,我无法找到任何带有两个空格缩进的代码示例。搜索“Haskell 风格指南”会得到这个,它推荐像书中使用的那样使用四空格缩进。
Haskell 模式的默认缩进行为是否与人们通常格式化 Haskell 代码的方式一致?如果不是,我应该如何更改我的 Emacs 配置以与最流行的缩进方案保持一致?
编辑:显然,我在前面的例子中关于缩进是不正确的。语句的第一次使用if
缩进如下:
doubleSmallNumber x = if x > 100
then x
else x*2
但在我当前的设置中,我似乎无法得到任何看起来像这样的东西TAB。S-TAB