我试图理解这里的缺陷在哪里。 SML模块系统是否仅提供依赖类型,类似于Idris扩展了Haskell类型系统,还是除了添加依赖类型的能力之外还有更多?现有互联网文章中关于SML模块系统的信息要么难以找到,要么对我来说难以理解。
**编辑** 对于这个问题,有些困惑,这种困惑似乎源于我对ML模块系统的混淆(我认为是由于我按照Haskell方式理解Functors)。依赖类型被提供作为两种类型系统可能不同的例子,但事实证明它是一个糟糕的例子,因为两个系统都不支持这样的东西(至少不是直接的)。
这个问题的主要目标是让我确定ML和Haskell类型系统之间概念表达上的差异。哪些抽象/概念不能在其中一个表示却可以在另一个中表示?为什么有人会声称ML的类型系统比Haskell的更现代/强大,反之亦然。另一种思考这个问题的方式是,在哪一个类型系统中缺少另一个类型系统拥有的功能?
我对此感兴趣的原因是由于我对架构软件系统的兴趣以及不同类型系统如何使软件的模块化和可扩展性更容易或更难。我对命令式语言中的面向对象类型系统不感兴趣,因此我现在正在研究ML和Haskell提供的类型系统,因为它们是我感兴趣的第一个类型系统。