众所周知,Haskell 风格的类型类和 ML 风格的模块为指定接口提供了不同的机制。它们(可能)在权力上是相等的,但实际上每个都有自己的优点和缺点。
由于在语言特性方面我有点包容主义者,所以我的问题是:将 ML 风格的模块添加到 Haskell 中的主要理论困难是什么?我对以下方面的答案感兴趣:
哪些现有类型系统功能与 ML 样式模块交互不佳?(交互不良的一个例子是 GADT 和函数依赖,尽管fundeps 在技术上等同于关联类型!)
为了编译 ML 风格的模块,在编译器端必须放弃哪些东西?
ML 样式模块如何与类型推断交互?
相关阅读: