Насколько я знаю, функция Haskell с ограничениями классов типов внутренне компилируется в функцию с дополнительными аргументами, которые получают словари с необходимыми реализациями каждого конкретного класса типов.
- Есть ли другие возможности, как скомпилировать классы типов?
- Если да, каковы их (не) преимущества?
- И какие компиляторы их используют?
Ответы:
JHC использует другой подход. Промежуточный язык компилятора является лямбда-исчислением с зависимой типизацией, в котором нет различия между типами и значениями. Поэтому JHC может выполнить анализ случая для параметра типа функции и напрямую вызвать правильную перегруженную функцию.
Веб- сайт JHC углубляется в реализацию, а также в ее преимущества перед стандартной передачей словаря.
источник