在 this 的第 30/78 幻灯片上在演讲中,Simon 表示类型类的实现一开始是一种“绝望”。有人知道这是为什么吗?
最佳答案
我想我是少数几个拥有第一手经验并了解为什么它如此困难的人之一,因为我在没有现有技术的情况下在 hbc 中实现了它。
因此,从 Wadler&Blott 论文中可以清楚地看出,类型检查是 Hindley-Milner 类型检查的扩展,并且在运行时您应该传递字典。从这一点到实际实现是相当大的一步。理解困难的一个好方法是从 Wadler-Blott 论文开始实际实现它。
首先,您需要提出类型检查器的想法,它不仅检查类型,还可以转换程序;在类型检查时插入证据(字典)。您还需要弄清楚如何使用实例声明作为推理系统从旧词典构造新词典。
回想起来,这一切似乎都是显而易见的,但请记住,从那时起,已经写了很多带有解释的论文。从论文中理解如何做某事与首先提出它是非常不同的。
此外,您希望类型类具有相当高的效率,这会导致其自身的一系列问题。
关于haskell - 为什么类型类很难实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526890/