¿Lista "moderna"?


El paquete HList se basó en lo que ahora es tecnología antigua Haskell. La pregunta simple es: dadas todas las maravillosas características nuevas de los últimos 8 años de desarrollo de Haskell / GHC, ¿se construiría una lista HList "moderna" de manera muy diferente? Me doy cuenta de que la respuesta aquí bien podría ser no, que para el caso particular de HList, la tecnología utilizada entonces todavía produce la solución más elegante.

He leído muchos de los artículos documentados en el extensible records page, el único competidor real (es decir, uno que se implementa como una biblioteca disponible en hackage) es el paquete records. ¿O faltan enlaces de registros extensibles?

Author: Chris Kuklewicz, 2012-08-22

1 answers

La pregunta para cualquiera de estos paquetes es el alcance de sus objetivos. HList es en realidad 5 implementaciones diferentes de etiquetas, dos de igualdad de tipo, dos de tipo casting, dos de Record / RecordP, y la Variante vs opción TIC. Todos son similares, pero son diferentes compensaciones de facilidad de uso, portabilidad y extensiones utilizadas.

Las nuevas características de GHC (GADTs, tipos asociados, tipos de restricción, tipos polimórficos, tipos singleton) pueden permitir compensaciones ligeramente diferentes. En particular, los tipos singleton pueden permitir mejores etiquetas, y los tipos polimórficos pueden permitir un Tipeable/Data/Generics más elegante .

El paquete "records" al que enlaza depende del paquete "kinds" que reclama:

"Haskell no tiene soporte para subtipos y polimorfismos subtipos. Sin embargo, este paquete se puede utilizar para emular subtipos de tipo * y variables de subtipo."

Pero esto ya no es cierto gracias a la promoción del tipo de datos a tipos en nuevas versiones de GHC. Así que esto Enero 2012 paquete puede ser un poco obsoleto ahora.

En cuanto a los registros, tal vez un nuevo sistema se basará en la última ronda de lentes polimórficas: lens y/o lens-family.

 11
Author: Chris Kuklewicz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-22 20:22:07