Wie kann ich Shapeless verwenden, um eine über Arität abstrahierende Funktion zu erstellen?

Betrachten wir ein konkretes Beispiel. Ich habe viele Funktionen, die eine variable Anzahl von Argumenten annehmen und a zurückgebenSeq[T]. Sagen:

def nonNeg(start: Int, count: Int): Seq[Int] = 
    Iterator.from(start).take(count).toSeq

Für jede dieser Funktionen muss eine "Java-Version" dieser Funktion erstellt werdenjava.util.List[T]. Ich kann die "Java-Version" der obigen Funktion erstellen mit:

def javaNonNeg(start: Int, count: Int): java.util.List[Int] =
    nonNeg(start, count).asJava

Dies ist etwas ausführlich, da die Liste der Parameter zweimal dupliziert wird. Stattdessen möchte ich eine übergeordnete Funktion erstellen, die als Parameter eine Funktion der Form von annimmtnonNeg (eine beliebige Anzahl und Art von Argumenten gibt a zurückSeq[T]) und gibt eine Funktion zurück, die dieselben Argumente verwendet, jedoch ajava.util.List[T]. Angenommen, diese Funktion wurde aufgerufenmakeJavaDann könnte ich schreiben:

def javaNonNeg = makeJava(nonNeg)

KannmakeJava geschrieben werden mitFormlos Fähigkeit zuüber die Arität abstrahieren? Wenn ja, wie und warum und wie kann das noch getan werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage