Previamente le pregunté question, y después de mucha investigación concluí que hay reglas especiales que GHC aplica solo para los infix $
y .
. Para esta pregunta, supongo que GHC sigue el sistema mencionado en la página RankNTypes - Haskell Prime más elaborada en el arbitary-rank.Inferencia tipo GHC para tipos de rango más altos - asignación a monotipos
RankNTypes - Haskell Prime estados página lo siguiente:
variables de parámetros sin firmas explícitos se asignan monotipos en la inferencia hacia arriba, pero pueden heredar tipos arbitrarios de rango en la baja de cheques.
Supongo que "monotipos asignados" significa que los tipos N de rango se convierten a los tipos de rango 1 moviendo todos sus calificadores al nivel más externo.
También creo que esto es lo que causó el tipo de error inusual que me llevó a hacer mi pregunta anterior.
así que tengo un par de preguntas:
1) ¿Hay alguna forma de conseguir GHC para advertir (o error) en la conversión implícita a monotipos? El error de tipo en mi anterior question tardó un tiempo en resolverse, una advertencia de una conversión a monotipo hubiera sido más útil que un error de tipo.
2) ¿Hay casos en los que la "asignación a monotipos" implícita sea un comportamiento razonable y, de ser así, podría dar un ejemplo?
3) Con respecto al infijo $
y .
, estos parecen tener reglas especiales en GHC. ¿Dónde está esto documentado? ¿Y hay otras reglas especiales que tiene GHC y dónde están documentadas?
[Este] (http://stackoverflow.com/q/9468963/775806) podría ser de su interés. –
En cuanto al punto 3, mi sospecha es que solo están documentados en la fuente de GHC. No estoy al tanto de ninguna documentación en cualquier caso. Puede intentar pedir en la lista de usuarios de ghc una respuesta autoritativa. –