Lo siguiente no se compila:declaraciones de datos de plantilla que se derivan de Haskell Mostrar
import Language.Haskell.TH
makeAlpha n = [d| data Alpha = Alpha $(conT n) deriving (Show, Read) |]
no puedo distinguir lo que significa en absoluto el error:
Can't derive instances where the instance context mentions
type variables that are not data type parameters
Offending constraint: Show t_d
When deriving the instance for (Show Alpha)
In the Template Haskell quotation
[d| data Alpha = Alpha $(conT n) deriving (Show, Read) |]
In the expression:
[d| data Alpha = Alpha $(conT n) deriving (Show, Read) |]
¿Es posible hacer derivaciones ¿Me gusta esto?
Creo que el problema podría ser que está tratando de derivar las instancias antes de obtener * n *; es decir, está tratando de expandir su empalme para contener las instancias, pero no puede, porque no sabe a qué se parece '$ (conT n)'. No estoy seguro, sin embargo. – ehird
Pensé de manera similar, pero a menudo no puedo estar seguro de lo que está permitido y no con Template Haskell ... En este escenario, creo que es obvio que todavía no puede derivar las instancias y debe esperar el uso de la función para expandir . ¿Es esto un error? – Ana
Hmm, espera, ¿no debería ser 'datos Alpha = $ (conT n)' o algo así? Creo que lo que tienes ahora es un error de tipo, al menos al echar un vistazo a [la definición de 'Dec'] (http://hackage.haskell.org/packages/archive/template-haskell/2.6.0.0/doc/html /Language-Haskell-TH-Syntax.html#t:Dec). – ehird