【问题标题】:Haskell indentation styleHaskell 缩进样式
【发布时间】:2012-12-18 22:25:08
【问题描述】:

我发现我在缩进多少、在哪里换行等方面经常不一致。关于在 Haskell 中应该如何布局空白是否有官方或广泛遵循的指导方针?请注意,我不是在问什么是合法的。我在问什么是好的做法,类似于 Good Haskell coding style of if/else control block? ,但更普遍。我特别想知道人们如何处理 do-blocks、let-blocks、where-blocks 和 case 语句,尤其是当这些东西相互嵌套或嵌套在多个函数定义中时。

【问题讨论】:

标签: haskell coding-style indentation


【解决方案1】:

如果可以的话,我会吹毛求疵。

我最喜欢 hammar 的链接指南。但是,我真的不喜欢这种风格:

send :: Socket
     -> ByteString
     -> IO Int

我更喜欢

send ::
  Socket ->
  ByteString ->
  IO Int

在后一种风格中,参数和结果看起来不同(参数后面有->s)。

我更喜欢这个。人们可能不同意,这主要只是个人品味的问题。可悲的是,afaik 黑线鳕似乎只支持前一种风格:(

【讨论】:

  • 我还想知道每行 80 个字符的规则是否有事后诸葛亮需要在卡片上打出他们的 haskell 源代码的人?
  • @Ingo 在我看来,列限制更好地使用空间。我通常在屏幕上并排放置几列文本。
  • @Heatsink 非常正确。但是为什么是80?为什么不是 72 或 96?
  • 我同样不喜欢这两种风格,但我还没有找到更好的选择。如果可能的话,我只是避免类型签名对于一行来说太宽。
  • 对共享代码的实际关注使得第一种风格更受欢迎。在查看第二种样式的签名更改时,特别是在签名末尾添加新参数的更改时,差异中出现的行数超过了必要的行数。我更喜欢第一种风格,它与列表、数据声明、模块导出和其他几个 Haskell 结构的首选风格一致。也就是说,我部分同意我也更喜欢根本不包装签名(这会抛弃我的整个合并论点);)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多