Como posso usar Shapeless para criar uma função abstraindo sobre arity

Vamos considerar um exemplo específico. Eu tenho muitas funções que recebem um número variável de argumentos e retornam umSeq[T]. Dizer:

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

Para cada uma dessas funções, preciso criar uma "versão Java" dessa função, retornar umjava.util.List[T]. Eu posso criar a "versão Java" da função acima com:

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

Isso é um pouco detalhado, pois a lista de parâmetros é duplicada duas vezes. Em vez disso, gostaria de criar uma função de nível superior que tome como parâmetro uma função da forma denonNeg (qualquer número e tipo de argumento, retorna umSeq[T]) e retorna uma função que aceita os mesmos argumentos, mas retorna umjava.util.List[T]. Supondo que essa função foi chamadamakeJava, Então eu seria capaz de escrever:

def javaNonNeg = makeJava(nonNeg)

podemakeJava ser escrito usandoSem forma capacidade paraabstraindo sobre a aridade? Se pode, como, e não, por que e como mais isso pode ser feito?

questionAnswers(2)

yourAnswerToTheQuestion