haskell - Coercible con GHC 7.10
(1)
El siguiente código funciona en GHC 7.8.4:
import Data.Coerce
coerceNewtype :: (Coercible (o r) (n m'' r)) => [o r] -> [n m'' r]
coerceNewtype = coerce
pero en 7.10 me sale el error:
Couldn''t match representation of type ‘n m'' r’ with that of ‘o r’
arising from trying to show that the representations of
‘[o r]’ and
‘[n m'' r]’ are the same
Relevant role signatures: type role [] representational
No estoy muy seguro de dónde ocurre la magia en Data.Coerce
, pero dado que coerce
tiene la firma (Coercible ab) => a -> b
, creo que la función anterior debería compilarse en 7.10. ¿Alguna idea de por qué el comportamiento es diferente, o cómo puedo usar coercible con tipos polimórficos en 7.10?
No hay nada malo con tu código.
El error se debe a un bug en el comprobador de tipos. El rastreador de problemas dice que esto se solucionará en GHC 7.11.
Publicar simplemente para proporcionar una respuesta, ya que el autor original no publica una. Siéntase libre de agregar detalles si lo desea (y puede).