Jakie są możliwe implementacje klas typów Haskell i jakie są ich (nie) zalety?


9

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ą?

4
Na ten temat jest sporo literatury. Może zacznij od implementacji klas typów J. Petersona, M. Jonesa. Możesz także spojrzeć na klasy typów jako obiekty i implikacje autorstwa Oliveiry i in., Która mówi o tym w kontekście Scali, ale ma dość dużą część na temat powiązanych prac.
Martin Berger,


1
@MartinBerger uczyni to odpowiedzią?
Suresh Venkat,

Drugi można znaleźć tutaj .
Martin Berger,

@Suresh Venkat, nie chciałem udzielić odpowiedzi, ponieważ nie jestem pewien, czy te dwie są najlepsze, a nawet dobre odpowiedzi. Minęło trochę czasu, odkąd spojrzałem na implementacje języków funkcjonalnych. Być może niektórzy mieszkańcy FP mogą się wtrącić.
Martin Berger

Odpowiedzi:


8

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.