gpt4 book ai didi

haskell - 为什么 Haskell 标准库不更多地利用多态性?

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

我正在学习 Haskell,类型类似乎是创建类型安全多态函数的强大方法。但许多 Haskell Prelude 函数并不使用它们。更具体地说:

  • 大多数列表函数不能与其他数据结构一起使用(例如,foldrlength 仅针对列表实现,不能用于其他数据结构)用于数组)。

  • Data.ByteString 这样的模块除非使用import Qualified,否则不可用,因为它们包含与 Prelude 函数同名的函数。

如果标准库使用带有类型类的泛型函数,这两个问题似乎都会消失(如果我完全不同意这一点,请告诉我)。

我有两个问题:

  1. 有技术或设计吗序曲之所以如此,还是只是为了历史原因?

  2. 环顾四周,好像有一个几个库(比如 Data.Foldable而且,如果我不是错了,废弃你的样板)取代标准 Prelude 功能与通用替代品。是有计划将这些想法融入到 Haskell 的 future 版本中吗?

最佳答案

“标准”Haskell(Prelude + base + 也许更多)不使用更多的多态性有一个非常好的务实原因:

设计通用类型类很难。对于抽象容器类型(如列表、数组和“字节串”)(我个人并不真正认为 Bytestring 是一个容器)的类的良好设计不会等待被包含在 Haskell 2012 中。有一些设计,例如 LiSTLike 和爱迪生的类(class)中,许多人已经解决了这个问题,但除了可折叠和可遍历之外,没有人提出任何引人注目的设计。

关于haskell - 为什么 Haskell 标准库不更多地利用多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4779028/

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