haskell - 为什么类型类难以实现?

标签 haskell ghc typeclass

this 的第 30/78 幻灯片上在演讲中,Simon 表示类型类的实现一开始是一种“绝望”。有人知道这是为什么吗?

最佳答案

我想我是少数几个拥有第一手经验并了解为什么它如此困难的人之一,因为我在没有现有技术的情况下在 hbc 中实现了它。

因此,从 Wadler&Blott 论文中可以清楚地看出,类型检查是 Hindley-Milner 类型检查的扩展,并且在运行时您应该传递字典。从这一点到实际实现是相当大的一步。理解困难的一个好方法是从 Wadler-Blott 论文开始实际实现它。

首先,您需要提出类型检查器的想法,它不仅检查类型,还可以转换程序;在类型检查时插入证据(字典)。您还需要弄清楚如何使用实例声明作为推理系统从旧词典构造新词典。

回想起来,这一切似乎都是显而易见的,但请记住,从那时起,已经写了很多带有解释的论文。从论文中理解如何做某事与首先提出它是非常不同的。

此外,您希望类型类具有相当高的效率,这会导致其自身的一系列问题。

关于haskell - 为什么类型类难以实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9602176/

相关文章:

function - 为什么在函数定义中首选模式匹配?

haskell - 如何将 Data.Default 与 Network.HTTP.Client 结合使用

Haskell:读取包含 Int 和 Float 的行的简单方法?

haskell - 为什么不将输入和输出上具有相同数据结构(相同暗淡)的组合自递归函数与其他递归内联在一起?

scala - 委托(delegate)给更具体的上下文绑定(bind)(附加隐式参数)

haskell - 我们在 Coyoneda 上申请的 "natural transformations"是为了得到一个 Functor 实际上是 "natural transformations"吗?

multithreading - Haskell:没有利用所有内核的并行程序

haskell - 将字符串视为 Haskell 程序

haskell - 通用转换类型类

haskell - 我想在 Haskell 中编写一个类似于 `flip` 的函数来摆脱 lambda 表达式。但我无法处理它的类型