Diese Frage ist für die Menschen, die sowohl Haskell kennen (oder eine beliebige andere funktionale Sprache, die Höher kinded Typen unterstützt) und C++ ...Higher-kinded Typen mit C++
Ist es möglich, zu modellieren höher kinded Typen mit C++ Vorlagen? Wenn ja, wie?
EDIT:
Von this Präsentation von Tony Morris:
Höherwertige Polymorphism:
Sprachen wie Java und C# erster Ordnung Polymorphismus weil sie erlauben uns, auf Typen zu abstrahieren. z.B.
List<A>
kann einereverse
Funktion haben, die auf jedem Elementtyp funktioniert (A
).Praktischere Programmiersprachen und Typ-Systeme ermöglichen es uns, abstrakt auf Typkonstruktoren als gut.
Diese Funktion wird als höherer Ordnung (oder höherer Ordnung) Polymorphismus höherer Ordnung bezeichnet.
Beispiel:
Pseudo-Java mit einer erfundenen Notation für höhere Ordnung Polymorphismus
interface Transformer<X, Y> {
Y transform(X x);
}
interface Monad<M> { // M :: * -> *
<A> M<A> pure(A a);
<A, B> M<B> bind(Transformer<A, M<B>> t, M<A> a);
}
Vielleicht könnten Sie ein Beispiel für Ihr Ziel geben. Für uns nicht-wissen-funktionale-Idiome-sehr gut Typen, die helfen würden. – GManNickG
@GMan: Ich könnte ein Beispiel geben, aber ich bin mir bewusst, dass es kaum etwas bedeuten wird außer für die Leute, die es schon wissen. Also habe ich mir kein Beispiel genommen. –
@Venkat: Ich meine ein Ziel, was ist dein größeres Bild? Sie möchten einen höheren Typ für: __________. Auch ein sehr einfaches Beispiel mit Kommentaren wäre immer noch besser als nichts. :) – GManNickG