ML模块系统是数据抽象的编程语言支持的高水准标志。 然而,从表面上看,它似乎很容易用支持抽象types成员的面向对象语言进行编码。 例如,我们可以在Scala中对SML模块系统的元素进行编码,如下所示: SML签名:没有具体成员的斯卡拉特质 具有给定特征的SML结构:扩展给定特征的Scala对象 通过给定签名参数化的SML函子:Scala类将扩展给定特征的对象作为构造函数参数 有什么重要的function,这样的编码会错过? 任何可以用SML模块表示的编码无法expression的东西? SML使这种编码无法做到的任何保证?