Без заголовка
В Скале большая часть выразительности системы модулей ML/OCaml достигается средствами самого языка. Объекты-как-модули, abstract type members и другие конструкции позволяют выражать то же, не вводя отдельного языка для модулей. В ML два языка имеют дополнительной причиной то, что нельзя сделать core язык достаточно мощным для поглощения системы модулей и сохранить при этом глобальный вывод типов. А так имеем два языка, core-язык для внутренностей модулей с principal type property (типы явно можно не указывать), на границах же модулей все равно хорошо типы, как интерфейс модуля, задавать явно. В Скале изначально вывод типов локальный, портить нечего :)
Для Хаскелля систему модулей в этот момент придумывают Scott Kilpatrick с SPJ.