Хорошо известно, что стили класса стиля Haskell и модули ML-стиля предлагают различные механизмы для указания интерфейсов. Они (возможно) эквивалентны по силе, но на практике у каждого есть свои преимущества и недостатки.
Поскольку я немного инклюзив, когда речь идет о языковых функциях, мой вопрос таков: каковы основные теоретические трудности с добавлением модулей ML-стиля в Haskell? Меня интересуют ответы в следующих строках:
-
Какие существующие системные функции типа плохо взаимодействуют с модулями ML-стиля? (Примером плохого взаимодействия является GADT и функциональные зависимости, даже если фонды являются технически эквивалентными связанным типам!)
-
Какие вещи нужно оставить в конце компилятора для компиляции модулей стиля ML?
-
Как модули ML-стиля взаимодействуют с выводами типа?
Связанное чтение: