Questa domanda è per le persone che conoscono sia Haskell (o qualsiasi altro linguaggio funzionale che supporta i tipi più elevati-kinded) e C++ ...tipi superiori-kinded con C++
E 'possibile modellare i tipi più elevato kinded utilizzando Modelli C++? Se sì, allora come?
EDIT:
Da this presentazione di Tony Morris:
di ordine superiore polimorfismo:
linguaggi come Java e C# hanno primo ordine polimorfismo perché loro ci permettono di astrarre su tipi. per esempio.
List<A>
può avere una funzionereverse
che funziona su qualsiasi tipo di elemento (A
).più pratici dei linguaggi di programmazione e dei sistemi di tipo ci permettono di astratto su costruttori di tipo come bene.
Questa funzione è denominata polimorfismo di ordine superiore (o di tipo superiore).
Esempio:
Pseudo-Java con una notazione inventata per ordine superiore polimorfismo
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);
}
Forse potresti dare un esempio del tuo obiettivo. Per noi non-so-funzionali-idiomi-tipi molto bene che aiuterebbero. – GManNickG
@GMan: Potrei dare un esempio, ma sono ben consapevole che non significherà nulla tranne per le persone che lo conoscono già. Quindi non mi sono preoccupato di includere un esempio. –
@Venkat: intendo un obiettivo, qual è la tua immagine più grande? Vuoi un tipo più alto per: __________. Inoltre, un esempio molto semplice con commenti sarebbe ancora meglio di niente. :) – GManNickG