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?