gpt4 book ai didi

haskell - 良好的 Haskell 编码标准

转载 作者:行者123 更新时间:2023-12-03 05:20:26 25 4
gpt4 key购买 nike

有人可以提供一个良好的 Haskell 编码标准的链接吗?我找到了thisthis ,但它们还远远不够全面。更不用说 HaskellWiki 包含诸如“小心使用类”和“定义符号中缀标识符应该只留给库编写者”这样的“ gem ”。

最佳答案

真是个很难回答的问题。我希望你的回答能带来好的结果。同时,这里是我在初学者代码中发现的错误或其他烦人的事情的目录。与 Kornel Kisielewicz 指出的加州理工学院风格页面有一些重叠。我的一些建议与 HaskellWiki“ gem ”一样模糊且无用,但我希望至少这是更好的建议:-)

  • 格式化您的代码,使其适合 80 列。 (高级用户可能更喜欢 87 或 88;除此之外就是插入它。)

  • 别忘了let绑定(bind)和 where子句创建相互递归的定义嵌套,而不是定义的序列

  • 利用 where子句,尤其是它们查看已经在范围内的函数参数的能力(很好的模糊建议)。如果你真的很了解 Haskell,你的代码应该有更多 where -绑定(bind)比 let - 绑定(bind)。太多let -绑定(bind)是未重构的 ML 程序员或 Lisp 程序员的标志。

  • 避免多余的括号。一些多余括号特别令人反感的地方是

    • 围绕 if 中的条件表达式(将您标记为未经改造的 C 程序员)

    • 围绕一个函数应用程序,它本身就是中缀运算符的参数(函数应用程序比任何中缀运算符绑定(bind)得更紧密。这个事实应该铭刻在每个 Haskeller 的大脑中,同样的道理我们恐龙就这样铭记了 APL 从右到左的扫描规则。)

  • 在中缀运算符周围放置空格。在元组文字中的每个逗号后面放置一个空格。

  • 首选函数及其参数之间有一个空格,即使参数带有括号。

  • 使用 $运算符明智地减少括号。请注意 $ 之间的密切关系和中缀 . :

    f $ g $ h x == (f . g . h) x == f . g . h $ x
  • 不要忽视内置 MaybeEither类型。

  • 永远不要写if <expression> then True else False ;正确的短语是 <expression> .

  • 不要使用headtail当你可以使用模式匹配时。

  • 不要忽视使用中缀点运算符的函数组合。

  • 小心使用换行符。换行符可以提高可读性,但需要权衡:您的编辑器一次可能只显示 40-50 行。如果您需要一次阅读并理解一个大函数,则不得过度使用换行符。

  • 几乎总是更喜欢 --注释在 {- ... -} 上运行到行尾评论。大括号注释可能适合大标题 - 就是这样。

  • 为每个顶级函数提供显式类型签名。

  • 如果可能,请对齐 --行,=符号,甚至相邻行中出现的括号和逗号。

  • 受 GHC 中心的影响,我非常温和地倾向于使用 camelCase对于导出的标识符和 short_name带下划线的本地 where -绑定(bind)或 let绑定(bind)变量。

关于haskell - 良好的 Haskell 编码标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1983047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com