Haskell: Klassenfrage eingeben

7

Ich möchte die folgende typeclass Mapping definieren:

%Vor%

Eine Instanz von Mapping ist Data.Map.Map

%Vor%

Und jetzt möchte ich einen Typ Trie :: * -> * -> * -> * wie

erstellen %Vor%

So weit so gut, jetzt möchte ich auch Trie s insert und empty definieren, und das ist, wo ich in Probleme komme.

Ich werde empty diskutieren, weil es einfacher ist und insert es trotzdem braucht .. Wenn ich das versuche:

%Vor%

und das bringt mich zu folgendem Fehler:

%Vor%

Ich habe versucht und versucht, es zu lösen, aber gescheitert.

Weiß jemand, wie es funktioniert? Ist es überhaupt möglich?

    
yairchu 19.06.2009, 20:33
quelle

2 Antworten

14

Fügen Sie eine funktionale Abhängigkeit hinzu:

%Vor%

Die Fehler, die Sie zuvor hatten, waren, weil das Programm nicht eindeutig war, welcher Schlüsseltyp an bestimmten Stellen verwendet werden sollte, daher die Fehler bezüglich der Typvariablen k1 . Die funktionale Abhängigkeit ermöglicht, dass der Schlüsseltyp aus dem Kartentyp abgeleitet wird (indem erklärt wird, dass es nur eine mögliche Antwort gibt), die sich mit diesem Problem befasst.

    
Ganesh Sittampalam 19.06.2009, 21:35
quelle
7

Code, um Ganeshs Antwort zu demonstrieren:

%Vor%

Übrigens: Hätten funktionale Abhängigkeiten nicht existiert, müssten wir wahrscheinlich eine lästige Schnittstelle kompromittieren und Funktionstabellen anstelle von Typklassen verwenden.

    
yairchu 19.06.2009 22:10
quelle

Tags und Links