Хиндли-Милнер - это не система типов, а алгоритм вывода типов. Раньше система типов Haskell могла быть полностью выведена с помощью HM, но этот корабль уже давно проплыл на современном Haskell с расширениями. (ML по-прежнему может быть полностью выведен).
Возможно, способность в основном или полностью выводить все типы дает силу с точки зрения выразительности.
Но, по-моему, вопрос не в этом.
В работах, которые не связаны, указывается на другой аспект - что расширения системы типов Haskell делают ее полной по Тьюрингу (и что современные семейства типов делают этот полный по языку язык намного более похожим на программирование на уровне значений). Еще одна хорошая статья на эту тему - Макбрайд Faking It: имитация зависимых типов в Haskell .
В статье в другой теме о Scala: «Классы типов как объекты и следствия» объясняется, почему на самом деле вы можете делать большую часть этого и в Scala, хотя и с немного большей ясностью. Я склонен чувствовать, но это более интуитивное чувство, чем из реального опыта Scala, что его более конкретный и явный подход (то, что в C ++ называется «номинальным») в конечном счете немного сложнее.