В чем разница в возможностях между модульной системой SML и системой Haskell Type и Typeclass?

Я пытаюсь понять, где этот недостаток. Использует ли система SML-модуль только зависимые типы, аналогичные тому, как Idris расширил систему типа Haskell, или происходит ли больше, чем просто возможность добавления зависимых типов? Информация о системе модуля SML в существующих интернет-статьях была либо трудно найти, либо трудно понять для меня.

** Изменить ** Существовала некоторая путаница в том, что я действительно получаю с этим вопросом, и путаница, похоже, связана с моей путаницей в отношении модуля ML Module (я думаю, из-за того, что я понял Функторы на пути Haskell). Зависимые типы предлагались в качестве примера того, что может быть разным между системами типа 2, но оказалось, что это был плохой пример, поскольку ни одна система не поддерживает такую ​​вещь (по крайней мере, не напрямую).

Основная цель этого вопроса - определить различия в выражении понятий между системами типа ML и Haskell. Какие абстракции/понятия не могут быть представлены в одном, который может быть в другом? Почему кто-то утверждает, что система типов ML более современна/мощна, чем Haskell, или наоборот. Другой способ подумать об этом - это то, где отсутствует система одного типа, где нет другого?

Причина, по которой я заинтересован в том, чтобы знать это, связан с моим интересом к архитектуре систем программного обеспечения и тому, как различные системы типов упрощают или затрудняют модульность и расширяемость программного обеспечения. Я не впечатлен системами объектно-ориентированного типа от императивных языков, поэтому теперь я разветвляюсь и изучаю те, которые предлагают ML и Haskell, поскольку они меня интересуют первые.