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


9

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

  • Есть ли другие возможности, как скомпилировать классы типов?
  • Если да, каковы их (не) преимущества?
  • И какие компиляторы их используют?

4
Есть довольно много литературы по этому вопросу. Возможно начать с Реализации Классов Типа Дж. Петерсоном, М. Джонсом. Вы также можете взглянуть на классы типов как объекты и следствия от Оливейры и др., Который говорит об этом в контексте Scala, но имеет довольно большой раздел по связанной работе.
Мартин Бергер


1
@MartinBerger сделать это ответом?
Суреш Венкат

Другой можно найти здесь .
Мартин Бергер

@ Суреш Венкат, я не хотел, чтобы это было ответом, потому что я не уверен, что эти два - лучшие или даже хорошие ответы. Прошло много времени с тех пор, как я посмотрел на реализации функциональных языков. Может быть, некоторые из резидентских тел FP могут вмешаться.
Мартин Бергер

Ответы:


8

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.