Mache Funktionen zu einer Instanz der Vektortypklasse

8

Ich habe eine benutzerdefinierte Typklasse für mathematische Vektoren

%Vor%

und ich möchte Zahlen a und Funktionen a -> vector zu einer Instanz der Klasse machen. Zahlen sind einfach:

%Vor%

und ich dachte, Funktionen wären auch einfach (naja, außer dot , aber damit kann ich leben)

%Vor%

Allerdings erhalte ich den folgenden Fehler:

%Vor%

Wie kann ich GHC mitteilen, dass die Instanz für alle Typen gültig ist a ? Wo soll ich die Typensignatur hinzufügen?

    
Chris Taylor 23.10.2012, 11:34
quelle

2 Antworten

4

Typ Familien sind definitiv die schönste Art, dieses Problem zu lösen

%Vor%

Um einen Vektorraum aus Funktionen zu machen, müssen Sie das gleiche Feld mathematisch verwenden:

%Vor%

... und das Schöne an Schriftfamilien ist, dass sie sehr gut funktionieren, wie Sie es erklären würden. Lassen Sie uns das direkte Produkt von zwei Vektorräumen machen:

%Vor%

Sie könnten den Num -Kontext durch eine benutzerdefinierte algebraische Klasse ersetzen, aber Num erfasst das Konzept von einem Feld mäßig gut.

    
AndrewC 23.10.2012, 17:13
quelle
2

Ich konnte das folgende kleine Beispiel (nach Conal Elliotts Vektorraum Paket) kompilieren:

%Vor%

Es kann möglich sein, dies mit funktionalen Abhängigkeiten anstelle von Typfamilien arbeiten zu lassen.

    
Mikhail Glushenkov 23.10.2012 12:35
quelle

Tags und Links