2010-06-17 15 views

Antwort

11

Ein mögliches Anwendungsbeispiel kann Conal's TypeCompose für das Zusammensetzen von Monadetransformatoren in Punkt-freiem Stil sein.

type MyT = StateT Foo :. MaybeT :. ContT Bar 

(nur als Beispiel, habe ich keine Ahnung, was man mit der Foos und Bars tun wird ..)

Statt:

type MyT m = StateT Foo (MaybeT (ContT Bar m)) 

(dies würde die gleiche Ergebnis newtype -wrappers)

Derzeit müssen Sie die Kombinator-Code für verschiedene Arten duplizieren, und diese Erweiterung schafft die Wiederholung und ermöglicht die Verwendung ein Stück Code, um sie alle zu beherrschen.

1

Sie sind nützlich für die Definition von Funktionen, die natürlich über Datenkonstruktoren mit beliebiger Arithmetik arbeiten!

Ein konkretes Beispiel könnte eine Funktion sein, die bei einem Datenkonstruktor mit beliebiger Arity einen neuen Datenkonstruktor zurückgibt, der den angegebenen Konstruktor in Some() umschließt.

+1

Können Sie ein Beispiel geben ? – solidsnack

11

Adding Polymorphic Kinds to GHC

Der Hintergrund dieser Frage würde die motivation in general for a more expressive kind system sein.

Das heißt, der allgemeine Grund, polymorphe Arten zu Haskell hinzuzufügen, ist, die Erfahrung von Typ-Level-Programmierung zu verbessern. Zur Zeit läuft die Typ-Level-Programmierung in Haskell in einer im Wesentlichen untypisierten "kind" Ebene. Eine reichere Art Sprache wird die Programmierung auf Typenebene in Haskell im Allgemeinen einfacher machen.

Ein konkreteres Beispiel wäre die (dynamisch) typisierbarer Einschränkung von Generika des SYB Stil (citation) zu entfernen, sowie die Verbesserung der allgemeinen Unterstützung für höhere kinded generische Programmierung ..

Verwandte Themen