Каковы основные теоретические трудности с добавлением модулей в стиле ML в Haskell? - PullRequest
59 голосов
/ 17 апреля 2011

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

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

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

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

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

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

Ответы [ 3 ]

34 голосов
/ 17 апреля 2011

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

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

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

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

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

11 голосов
/ 18 апреля 2011

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

8 голосов
/ 18 апреля 2011

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

...