Konstruieren von TypeTags mit höherwertigen Typen

10

Bei einem einfachen parametrisierten Typ wie class LK[A] kann ich

schreiben %Vor%

Nun möchte ich ein Analog für class HK[F[_], A] schreiben:

%Vor%

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):

%Vor%

All dies funktioniert gut, wenn wir WeakTypeTag durch WeakTypeTag ersetzen. Leider nicht:

%Vor%     
Alexey Romanov 25.04.2015, 10:49
quelle

1 Antwort

4

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:

%Vor%

Alternativ können Sie, wenn Sie eine Instanz von TypeTag[A] haben, versuchen:

%Vor%

Erlauben Sie es Ihnen:

%Vor%     
Ben Reich 27.04.2015 13:59
quelle