Подтвердить что ты не робот

Каковы основные теоретические трудности с добавлением модулей ML-стиля в Haskell?

Хорошо известно, что стили класса стиля Haskell и модули ML-стиля предлагают различные механизмы для указания интерфейсов. Они (возможно) эквивалентны по силе, но на практике у каждого есть свои преимущества и недостатки.

Поскольку я немного инклюзив, когда речь идет о языковых функциях, мой вопрос таков: каковы основные теоретические трудности с добавлением модулей ML-стиля в Haskell? Меня интересуют ответы в следующих строках:

  • Какие существующие системные функции типа плохо взаимодействуют с модулями ML-стиля? (Примером плохого взаимодействия является GADT и функциональные зависимости, даже если фонды являются технически эквивалентными связанным типам!)

  • Какие вещи нужно оставить в конце компилятора для компиляции модулей стиля ML?

  • Как модули ML-стиля взаимодействуют с выводами типа?

Связанное чтение:

4b9b3361

Ответ 1

Основное место для сравнения -

  • Модули ML и классы типа Haskell: конструктивное сравнение. Стефан Вер и Мануэль М.Т. Чакраварти. В материалах шестого симпозиума ASIAN по языкам и системам программирования - APLAS 2008, Springer-Verlag, LNCS, 2008.

  • Модульные типы классов. Дерек Дрейер, Роберт Харпер и Мануэль М. Т. Чакраварти. В трудах 34-го ежегодного симпозиума ACM SIGPLAN - SIGACT по принципам языков программирования, ACM Press, 2007.

  • Модули первого класса для Haskell, Марк Шилдс и Саймон Пейтон Джонс. Представлено на девятой Международной конференции по основам объектно-ориентированных языков (FOOL 9), Портленд, Орегон. 20 страниц. Октябрь 2001 г.

На самом деле я не знаю каких-либо теоретических вопросов - по крайней мере, конкретные предложения были сделаны (и реализованы в прототипах) - в материалах Shields и PJ есть много деталей. Однако нагрузка на внедрение является нетривиальной.

Ответ 2

Я не думаю, что есть большие теоретические проблемы. Вам нужно будет принять решение об аппликативных функторах или нет. Аппликация, вероятно, больше в стиле Haskell. Но я думаю, что любая попытка добавления модулей стиля ML в Haskell будет гротескной, поскольку перекрытие между модулями и классами; будет два способа сделать много вещей.

Ответ 3

Simon PJ утверждает, что модули стиля ML имеют низкое соотношение мощности и стоимости, которые трудно реализовать. См. SPJ слайды из POPL 2003 (ближе к концу). Он также требует, чтобы дизайн, который имеет лучшую мощность/стоимость, но я не знаю о таком предложении.