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

标签 haskell ghc typeclass

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

最佳答案

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

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

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

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

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

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

相关文章:

multithreading - 在线程之间共享一个 mvar

list - 如何在 haskell 中进行有状态列表操作

windows - 将 GHC 创建的 Windows 可执行文件作为服务运行

haskell - 将类型包装在 newtype 中

haskell - UndecidableInstances 何时安全?关于 GHC 扩展的一些一般性问题

Haskell - 过滤器类型类

haskell - 如何对二进制 lambda 演算的输出建模?

haskell - 将 Haskell (monadic) 翻译成 F#

haskell - 存储和检索某个类型类的对象 - 可能吗?如果是,如何?

haskell - 使用常量值退化类型类实例声明