Bei einem einfachen parametrisierten Typ wie class LK[A]
kann ich
Nun möchte ich ein Analog für class HK[F[_], A]
schreiben:
Ist das möglich? Ich habe es versucht
%Vor% funktioniert aber aus den offensichtlichen Gründen nicht (im ersten Fall ist F[_]
der existentielle Typ anstelle des höherwertigen, im zweiten% kompiliert co_de% nicht).
Ich vermute, die Antwort ist "es ist unmöglich", aber wäre sehr glücklich, wenn es nicht ist.
BEARBEITEN: Wir verwenden TypeTag[F]
s wie folgt (etwas vereinfacht):
All dies funktioniert gut, wenn wir WeakTypeTag
durch WeakTypeTag
ersetzen. Leider nicht:
Funktioniert das für Ihre Zwecke?
%Vor% Im Gegensatz zur Verwendung des impliziten Parameters, um die TypeTag
für F
und A
getrennt zu erhalten und sie dann zusammenzusetzen, können Sie das gewünschte Tag direkt vom Compiler anfordern. Dies übergibt Ihren Testfall wie gewünscht:
Alternativ können Sie, wenn Sie eine Instanz von TypeTag[A]
haben, versuchen:
Erlauben Sie es Ihnen:
%Vor%Tags und Links scala higher-kinded-types scala-reflect