To pytanie jest dla ludzi, którzy znają zarówno Haskell (lub innego języka funkcjonalnego, który obsługuje wyższej kinded typy) i C++ ...Wyższe-kinded Typy z C++
Czy można modelować wyższe kinded rodzajów korzystania Szablony C++? Jeśli tak, to w jaki sposób?
EDIT:
Od this prezentacji Tony Morris:
wyższego rzędu polimorfizmu:
w językach takich jak Java i C# mają pierwszego rzędu polimorfizm ponieważ oni pozwalają nam na streszczenie na typy. na przykład
List<A>
może mieć funkcjęreverse
, która działa na dowolnym typie elementu (A
).bardziej praktycznych języków programowania i systemy typu pozwalają nam streszczenie na konstruktorów typu jak dobrze.
Ta funkcja nazywa się polimorfizmem wyższego rzędu (lub wyższym).
Przykład:
Pseudo-Java z wymyśloną notacji dla wyższego rzędu polimorfizmu
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);
}
Może mógłbyś podać przykład swojego celu. Dla nas nie znamy-funkcjonalnych-idiomów-bardzo dobrze typów, które mogłyby pomóc. – GManNickG
@GMan: Mogę podać przykład, ale mam świadomość, że nie będzie to miało większego znaczenia niż ludzie, którzy już to wiedzą. Więc nie zawracałem sobie głowy dołączeniem przykładu. –
@Venkat: Mam na myśli cel, jaki jest twój większy obraz? Chcesz typu o wyższym typie dla: __________. Również bardzo prosty przykład z komentarzami byłby lepszy niż nic. :) – GManNickG