Verwenden der allgemeinsten Typklassenfunktionstypen

8

Ich versuche, einen einfachen genetischen Algorithmus in Haskell zu schreiben. Ich dachte, der erste Schritt sollte sein, eine Typenklasse für Individuen zu machen, die "genetisch" sind, so:

%Vor%

Das erscheint mir vernünftig - ich möchte Fitness-Funktionen nicht unbedingt auf einen Typ wie Float oder Double beschränken, und konzeptionell sollte eine Fitness-Funktion nur eine Reihenfolge der Individuen liefern.

>

Wenn ich diese Typklasse jedoch für einen String -Wrapper implementiere:

%Vor%

Ich sehe den folgenden Fehler in GHC:

%Vor%

Soll ich also Klassenfunktionen nicht definieren? Muss ich die Funktion auf einen bestimmten konkreten Typ beschränken oder dem Typklassenkonstruktor eine andere Typvariable zur Verfügung stellen?

    
Daniel Buckmaster 13.06.2013, 23:51
quelle

1 Antwort

13

Luqui erklärte, was das Problem ist: fitness müsste in der Lage sein, beliebige Ord Instanz bereitzustellen, die der Aufrufer anfordern könnte, wenn das, was Sie wirklich wollen, ein bestimmtes ist passt am besten zu .

Dies ist IMO eine sehr nette Anwendung für assoziierte Synonyme:

%Vor%     
leftaroundabout 13.06.2013, 23:59
quelle

Tags und Links