Каковы возможные реализации классов типов Haskell и каковы их (не) преимущества?

9

Насколько я знаю, функция Haskell с ограничениями классов типов внутренне компилируется в функцию с дополнительными аргументами, которые получают словари с необходимыми реализациями каждого конкретного класса типов.

  • Есть ли другие возможности, как скомпилировать классы типов?
  • Если да, каковы их (не) преимущества?
  • И какие компиляторы их используют?
Петр Пудлак
источник
4
Есть довольно много литературы по этому вопросу. Возможно начать с Реализации Классов Типа Дж. Петерсоном, М. Джонсом. Вы также можете взглянуть на классы типов как объекты и следствия от Оливейры и др., Который говорит об этом в контексте Scala, но имеет довольно большой раздел по связанной работе.
Мартин Бергер
1
Я нашел ссылку на статью: Реализация классов типов. Джон Петерсон и Марк П. Джонс .
Петр Пудлак
1
@MartinBerger сделать это ответом?
Суреш Венкат
Другой можно найти здесь .
Мартин Бергер
@ Суреш Венкат, я не хотел, чтобы это было ответом, потому что я не уверен, что эти два - лучшие или даже хорошие ответы. Прошло много времени с тех пор, как я посмотрел на реализации функциональных языков. Может быть, некоторые из резидентских тел FP могут вмешаться.
Мартин Бергер

Ответы:

8

JHC использует другой подход. Промежуточный язык компилятора является лямбда-исчислением с зависимой типизацией, в котором нет различия между типами и значениями. Поэтому JHC может выполнить анализ случая для параметра типа функции и напрямую вызвать правильную перегруженную функцию.

Веб- сайт JHC углубляется в реализацию, а также в ее преимущества перед стандартной передачей словаря.

Доминик Маллиган
источник