gpt4 book ai didi

Haskell 风格和类型类设计(类型类应该最小化吗?)

转载 作者:行者123 更新时间:2023-12-02 17:00:02 25 4
gpt4 key购买 nike

假设

class A a where
m1 :: a -> a
m2 :: a -> a
m3 :: a -> a
...

可以使用 m1 编写 m2 和 m3 的默认实现。

m2m3留在A中更好还是将它们写为额外函数m2::A a => a -> a A 之外?或者换句话说,是否值得最小化类 API 还是重要?

我(快速)检查了一些样式指南,例如 programmin guidelines以及 large-scale design 中的一些链接-问题,以及一些书籍(工艺和rwh),但找不到这本书的推荐。如果有涉及此类问题的演示文稿、博客或书籍,您能分享一些建议吗?

电子邮件列表线程 type class design讨论这个并可能强调最小化。

最佳答案

如果满足以下条件,请将他们保留在类(class)中

  • 该类有多个不同的最小完整定义集,并且您无法先验地判断对于给定实例哪一个更简单/优雅。
  • 可以合理地预期,特定类型(例如未装箱向量)将允许比默认类型更有效地实现 m2m3。如果这些方法不能被重写,您就需要重写规则来实现这种优化。

具有大量“多余”方法的标准类的一个示例是(在较新的版本中)Foldable 。这部分是由于历史原因,但也因为不同的容器可能具有非常不同的严格性等属性,因此某些方法的默认实现可能对某些实例的性能非常不利。

如果这些注意事项均不适用于您的类,请将 m2m3 排除在类之外。 (您可以随时将它们放入:如果您提供默认实现,它不会破坏任何人的代码。)

关于Haskell 风格和类型类设计(类型类应该最小化吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38917336/

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