higher-kinded-types

Co to jest typ wyższy kinded w Scali?

Można znaleźć w sieci: Higher kinded type = = konstruktor typu? class AClass[T]{...} // For example, class List[T] ... truktor typu wyższego typu i konstruktora typu , który przyjmuje konstruktory typu jako parametr typu , stąd pytanie powyżej.

Kiedy wyższe typy są przydatne?

[[5]] od jakiegoś czasu zajmuję się dev w F# i podoba mi się. Jednak jeden buzzword, który wiem, że nie istnieje w F#, to ty ... zykład, gdzie typy o wyższym pokrewieństwie naprawdę ratują Cię albo w naciśnięciach klawiszy, albo w bezpieczeństwie typu?

Typy wyższe z C++

To pytanie jest dla ludzi, którzy znają zarówno Haskell (lub jakikolwiek inny język funkcjonalny, który obsługuje typy o wyżs ... > * <A> M<A> pure(A a); <A, B> M<B> bind(Transformer<A, M<B>> t, M<A> a); }

Określenie koncepcji dla typu, który ma szablon funkcji członka za pomocą Concepts Lite

Staram się określić pojęcie, aby ograniczyć Typ o wyższym pokrewieństwie, który ma szablon funkcji członka za pomocą Concepts ... ancji substytucja nie powiodła się w funkcji członka szablon (czy pomogłoby, gdyby szablon funkcji członka był ograniczony?).

Jaka jest różnica między parametrycznym polimorfizmem a typami o wyższym pokrewieństwie?

Jestem prawie pewien, że nie są takie same. Jednak jestem ugrzęzły przez powszechnie uważa się, że "Rust nie obsługuje" typów ... wyżej kinded . Wyjaśnienie, które podkreślało różnicę między * -> * -> * i (* -> *) -> *, było dla mnie kluczowe.

Jakie są ograniczenia w wnioskowaniu typów o wyższym pokrewieństwie w Scali?

W następującym uproszczonym kodzie próbki: case class One[A](a: A) // An identity functor case class Twice[F[_], A](a: F[A] ... ograniczona i musi być dość irytująca w monad transformers, więc podejrzewam, że brakuje mi jakiejś sztuczki, aby to obejść.

Skróty granic kontekstu z wyższymi rodzajami kinded

Czy jest możliwe użycie skrótu składni context bounds z wyższymi rodzajami kinded? trait One { def test[W : ClassManifest] ... W[_]: ClassManifest]: Unit } // not possible?? trait Six { def test[W[_]](implicit m: ClassManifest[W[_]]): Unit } // hmm...

Czy w Scali można "curryować" typy o wyższym pokrewieństwie?

Załóżmy, że mam cechę o dwóch parametrach typu, np. trait Qux[A, B] I inna cecha o wyższym parametrze typu, np. trait T ... odu, który nie ma sensu w Scali!): trait Baz[A] extends Turkle[Qux[A, _]] [5]}ktoś ma jakiś pomysł jak osiągnąć ten efekt?