Alias ​​en línea para la function de Kotlin que incluye generics

He acortado los nombres de algunas funciones extranjeras de uso frecuente (que no controlo) con "alias", según los consejos que recibí en una pregunta anterior . Esto ha funcionado bien para las funciones de extensión; sin embargo, tengo algunas funciones de primer nivel que también me gustaría crear. Para un ejemplo simplificado, considere la function generateSequence . Quiero ser capaz de hacer esto:

 // DOES NOT COMPILE inline val <T:Any> seq:(()->T?)->Sequence<T> get() = ::generateSequence 

… pero no puedo porque el genérico debe usarse en el tipo de receptor, como se explica bien en esta respuesta . ¿Hay alguna otra manera de crear un alias para una function de nivel superior (que requiera generics) que preserve la línea?

EDIT: intenté usar Any? y proyección de estrellas justo después de publicar la pregunta, pero todavía no creo que sea una buena respuesta:

 inline val seq:(()->Any?)->Sequence<*> get() = ::generateSequence 

Esto parece boptimalsu porque compromete la verificación de tipo en el tipo de elemento de la Secuencia, ¿correcto? Otras respuestas / pensamientos sobre lo que podría funcionar?

Una opción que puede usar es una import de cambio de nombre, aunque está limitada a un solo file de origen:

 import kotlin.sequences.generateSequence as seq fun main(args: Array<String>) { seq(1) { it + 1 }.take(10).forEach(::println) } 

Aparte de eso, creo, lo mejor que puedes hacer es volver a declarar otra function en línea:

 inline fun <T> seq(nextFunction: () -> T?) = generateSequence(nextFunction) 

De hecho, esperaría que el performance de esta opción fuera mejor que el de una reference de function, porque el uso de una propiedad en línea que devuelve una reference de function todavía tiene cierta sobrecarga cuando realiza una llamada a esa reference, mientras se realiza esta llamada. en línea y, por lo tanto, no debe introducir gastos generales para otra llamada anidada.

  • Kotlin: ¿Cómo puedo get la class de delegación de una propiedad miembro?
  • Convierta variables estáticas de Java a Kotlin
  • ¿Cómo implementar una propiedad que proviene de una fuente determinada hasta que se establece directamente en Kotlin?
  • Propiedad observable que permite agregar observadores en time de ejecución
  • Kotlin - Inicialización de propiedad usando "por perezoso" vs. "tardío"
  • ¿Hay un análogo didSet / willSet en Kotlin?
  • Delegado de propiedad de acceso en Kotlin
  • Crear un propio DataSource con properties de resorte
  • Al crear una interfaz en Kotlin, ¿importa si las properties tienen get / set?
  • Kotlin: ¿cómo hacer una propiedad delegada por map con un nombre personalizado?
  • ¿Cuál es la forma más sencilla de get propiedad segura para subprocesss en Kotlin?