Tengo curiosidad sobre las objeciones a implicit parameters discutidas en el artículo Functional Pearl: Implicit Configurations por Kiselyov y Shan.¿Los parámetros implícitos son una dificultad para incluir en GHC?
No es correcto el código en línea (β-reduce) en presencia de parámetros implícitos.
¿Realmente? Esperaría que GHC se alinee en el mismo alcance que el parámetro implícito pasado, ¿no?
Creo que entiendo su objeción de que:
El comportamiento de un término puede cambiar si se añade su firma, se quita o se cambia.
documentación del usuario de GHC explica que los programadores deben tener cuidado en torno polymorphic recursion y monomorphism restriction. ¿Es esto de alguna manera lo que quieren decir con un problema para inline?
Supongo que este ejemplo de recursión polimórfica cubre lo que quieren decir con "generalización sobre parámetros implícitos" también? ¿Algo más?
¿Es la clase de tipo ReifiesStorable
de Data.Reflection realmente una solución sensata a estas dificultades? Al parecer, deserializa toda la estructura de datos implícita cada vez que se accede, lo que puede ser desastroso para el rendimiento. Podríamos, por ejemplo, querer que nuestra información implícita sea una tabla de Cayley o una tabla de caracteres que ocupe un registro de RAM y debe tener acceso durante millones de operaciones algebraicas.
¿Existe quizás alguna solución mejor que emplee parámetros implícitos, u otra técnica que el compilador pueda optimizar fácilmente, detrás de escena, garantizando aún más a través del sistema de tipo utilizando subprocesos de estado o lo que sea?
Ahh, dulce, entonces 'Data.Reflection' ahora es magia negra. :) ¿Hay algún código o artículos que recomiendas leer? 'Data.Reflection' ya tiene más sentido ahora que veo el directorio de ejemplos. Debo leer otra cosa en 'Data.Tagged' y' Data.Proxy' aunque. –