haskell ghc

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).