Soweit ich weiß, wird eine Haskell-Funktion mit Einschränkungen für Typklassen intern zu einer Funktion mit zusätzlichen Argumenten kompiliert, die Wörterbücher mit den erforderlichen Implementierungen für jede bestimmte Typklasse erhalten.
- Gibt es andere Möglichkeiten, wie Typklassen kompiliert werden?
- Wenn ja, was sind ihre (Nachteile)?
- Und welche Compiler verwenden sie?
Antworten:
JHC verwendet einen anderen Ansatz. Die Zwischensprache des Compilers ist ein abhängig typisierter Lambda-Kalkül, bei dem es keinen Unterschied zwischen Typen und Werten gibt. JHC kann daher eine Fallanalyse des Typparameters einer Funktion durchführen und die richtige überladene Funktion direkt aufrufen.
Die JHC- Website befasst sich eingehend mit der Implementierung und ihren Vorteilen gegenüber der Standard-Dictionary-Passing-Implementierung.
quelle