Suponga que desea tener algo como variadic templates (la capacidad de definir n parámetros de tipo para una clase genérica) en Scala. Por ejemplo, usted no quiere definir Tuple2[+T1, +T2]
y Tuple3[+T1, +T2, +T3]
sino Tuple[T*]
.Emulación de plantillas variadic en Scala
¿Hay otras opciones que HLists que admitan Tuple, Producto y Función?
Supongo que podría lanzar su propia versión de HList, pero ¿por qué? ¿Puedes señalar cómo la opción prevista sería diferente de una HList? –
La definición de tipo en el lado del usuario es un poco complicado para mi gusto. Una solución ideal permitiría una definición de tipo más natural Tuple [T1, T2, T3] como el TupleX ya hace en las bibliotecas de Scala. Además, debe admitir otros tipos como Función y Producto. –
Pero Scala ya ofrece, y HList usa, algo de azúcar sintáctico para reducir esa complejidad. Por ejemplo, vea esta definición de tipo desde el enlace HList: 'val list: Int :: String :: Boolean :: HNil = ...'. –