有人可以提供一个良好的 Haskell 编码标准的链接吗?我发现了this http://urchin.earth.li/~ian/style/haskell.html and this http://www.haskell.org/haskellwiki/Programming_guidelines,但它们还远远不够全面。更不用说 HaskellWiki 中包含了诸如“小心使用类”和“定义符号中缀标识符应该只留给库编写者”这样的“宝石”。
真的很难回答。我希望你的回答能带来好的结果。同时,这里是我在初学者代码中发现的错误或其他烦人的事情的目录。与 Kornel Kisielewicz 指出的加州理工学院风格页面有一些重叠。我的一些建议与 HaskellWiki“宝石”一样模糊且无用,但我希望至少这是更好的建议:-)
设置代码格式,使其适合 80 列。 (高级用户可能更喜欢 87 或 88;除此之外就是推动它。)
别忘了let
绑定和where
子句创建相互递归的定义嵌套,not a sequence的定义。
利用where
子句,尤其是它们查看已经在范围内的函数参数的能力(很好的模糊建议)。如果你真的很了解 Haskell,你的代码应该有更多内容where
- 绑定比let
- 绑定。太多let
-bindings 是未重构的 ML 程序员或 Lisp 程序员的标志。
-
避免多余的括号。一些多余括号特别令人反感的地方是
在中缀运算符周围放置空格。在元组文字中的每个逗号后面放置一个空格。
最好在函数和它的参数之间有一个空格,即使参数是用括号括起来的。
-
Use the $
运算符明智地减少括号。留意之间的密切关系$
和中缀.
:
f $ g $ h x == (f . g . h) x == f . g . h $ x
不要忽视内置的Maybe
and Either
types.
从来不写if <expression> then True else False
;正确的短语是<expression>
.
不要使用head
or tail
当你可以使用模式匹配时。
不要忽视带有中缀点运算符的函数组合。
小心使用换行符。换行符可以提高可读性,但需要权衡:您的编辑器一次可能只显示 40-50 行。如果您需要一次阅读并理解一个大函数,则不得过度使用换行符。
几乎总是更喜欢--
注释运行到行尾{- ... -}
评论。大括号注释可能适合大标题——仅此而已。
为每个顶级函数提供显式类型签名。
如果可能的话,对齐--
lines, =
符号,甚至相邻行中出现的括号和逗号。
受 GHC Central 的影响,我对使用有非常温和的偏好camelCase
对于导出的标识符和short_name
本地带有下划线where
-结合或let
绑定变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)