O ile mi wiadomo, funkcja Haskella z ograniczeniami klas typów jest wewnętrznie kompilowana do funkcji z dodatkowymi argumentami, które otrzymują słowniki z niezbędnymi implementacjami poszczególnych klas typów.
- Czy istnieją inne możliwości kompilowania klas typów?
- Jeśli tak, jakie są ich (nie) zalety?
- A jakie kompilatory ich używają?
Odpowiedzi:
JHC stosuje inne podejście. Językiem pośrednim kompilatora jest rachunek lambda zależny od typu, w którym nie ma rozróżnienia między typami a wartościami. Dlatego JHC może przeprowadzić analizę przypadków na parametrze typu funkcji i bezpośrednio wywołać prawidłową funkcję przeciążoną.
JHC strona idzie do pewnej głębokości od implementacji, jak również jego zalet w stosunku do standardowej implementacji mijania słownika.
źródło