Höherwertige Typen mit C ++
Diese Frage richtet sich an Personen, die sowohl Haskell (oder eine andere funktionale Sprache, die höherwertige Typen unterstützt) als auch C ++ kennen ...
Ist es möglich, Typen höherer Klassen mithilfe von C ++ - Vorlagen zu modellieren? Wenn ja, wie?
EDIT:
VonDie Präsentation von Tony Morris:
Polymorphismus höherer Ordnung:
Sprachen wie Java und C # haben einen Polymorphismus erster Ordnung, weil sie es uns ermöglichen, über Typen zu abstrahieren. z.B.List<A>
kann ein @ habreverse
-Funktion, die für jeden Elementtyp funktioniert (dasA
).
Mehr praktische Programmiersprachen und Typsysteme ermöglichen es uns, auch über Typkonstruktoren zu abstrahieren.
Diese Funktion wird als Polymorphismus höherer Ordnung (oder höherwertiger) bezeichnet.
Beispiel:
Pseudo-Java mit einer erfundenen Notation für Polymorphismus höherer Ordnung
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);
}