Ist es möglich, die Typrückschlüsse für teilweise angewandte Typen in Scala zu verbessern?

8

Ich versuche, die Typinferenz der Funktion traverse_ im folgenden Code zu verbessern:

%Vor%

Beim Ausführen des obigen Befehls:

%Vor%

Um es kompilieren zu können, muss ich die Typargumente zu traverse_ :

angeben %Vor%

Gibt es eine Möglichkeit, traverse_ oder irgendeinen anderen Teil des Codes zu restrukturieren, damit die Typrückschlüsse funktionieren? Wenn die Typen komplexer werden, nervt das schnell.

    
Lachlan 08.03.2013, 13:23
quelle

1 Antwort

9

Wie von Ben James hervorgehoben, suchen Sie nach Miles Sabins Unapply Trick . Hier ist es in scalaz repo. Hier ist traverseU , implementiert mit seiner Hilfe. Hier sind einige Beispielverwendungen aufgeführt. Und hier ist meine skizzenhafte (hoffentlich korrekte) Implementierung für Ihren speziellen Fall (Hinweis: Ich habe Ihre Applicative in ApplicativeTest umbenannt, um Applicative , definiert in scalaz, nicht zu stören):

%Vor%

Ich weiß immer noch nicht, wie man Either[String, Unit] anstelle von Product with Serializable with scala.util.Either[String,Unit] anders ableiten kann, als streng Typ in einem der Fälle, wie ich es in dieser Zeile getan habe: case 5 => Left("x"): Either[String, Unit] .

    
folone 08.03.2013, 16:49
quelle

Tags und Links