Gibt es einen standardmäßigen polymorphen Einheitstyp haskell

8

In Haskell gibt es einen Standardeinheitstyp, nämlich (). Ich suche nach einer polymorphen (vorzugsweise in Hackage), zum Beispiel:

%Vor%

oder vielleicht ein polymorpher Nulltyp:

%Vor%

Also ja, ich könnte selbst eine schreiben, durch eine der obigen Aussagen. Ich suche einen im hackage.

Der Grund, warum ich es brauche, ist, weil ich eine Klasse mit mehreren Typparametern habe, die eine Funktion enthält, die keinen von ihnen verwendet:

%Vor%

Wenn diese Funktion "someFunction" verwendet wird, kann GHC die richtige Instanz nicht finden, also habe ich meine Definition geändert:

%Vor%

Wenn ich nun someFunction aufruft, kann ich (PUT :: SomeType) als erstes Argument verwenden, und Haskell kann ableiten, welche Instanz ich meinte. Jedes Mal, wenn ich diesen Trick benutze, schreibe ich einen neuen polymorphen Einheitstyp (es ist nur eine Zeile von Codes), was mir ein bisschen mehr Arbeit bei der Kombination verschiedener Bibliotheken gibt (weil ich vorzugsweise den gleichen Konstruktor überall verwenden würde). Ich bin mir sicher, dass andere Leute auf dieses Problem gestoßen sind, vielleicht hat einer von ihnen eine Lösung im Hack (ghcs Paketmanager)? Ich möchte es importieren. Suche ich nach dem Falschen oder existiert es nicht im Hack?

    
Sebastiaan 29.09.2014, 10:32
quelle

1 Antwort

20

Ich denke, was Sie suchen, heißt normalerweise Proxy . Seit base-4.7 ist es verfügbar in Data.Proxy

Eine ähnliche Sache, die seit länger als Proxy in der Basis verfügbar ist, ist Const , z Sie können Const () verwenden.

    
Joachim Breitner 29.09.2014 10:41
quelle

Tags und Links