Модуль модуля ML выступает в качестве знака высокого уровня поддержки языка программирования для абстракция данных. Однако внешне кажется, что он легко может быть закодирован на объектно-ориентированном языке, который поддерживает элементы абстрактного типа. Например, мы можем кодировать элементы модульной системы SML в Scala следующим образом:
- Подписи SML: Scala черты без конкретных элементов
- Структуры SML с заданными сигнатурами: Scala объекты, расширяющие заданные черты
- Функторы SML, параметризованные данными сигнатурами: Scala классы, принимающие объекты, расширяющие заданные черты как аргументы конструктора
Есть ли какие-либо существенные функции, которые может пропустить кодировка? Что-нибудь, что может быть выражено в модулях SML, которые кодировка не может выразить? Любые гарантии, что SML делает невозможным создание этой кодировки?