Tengo curiosidad por qué tengo que escribir esto,explicación de "tipo ilegal de sinónimos familia"
instance (HzMonad , Data.Suitable.Suitable α, γ ~ ExprTyp α) => VarDecl γ where
var = varhz
en lugar de esta
instance (HzMonad , Data.Suitable.Suitable α) => VarDecl (ExprTyp α) where
var = varhz
-- error
Hz2/Language.hs:114:53:
Illegal type synonym family application in instance: ExprTyp α
In the instance declaration for `VarDecl (ExprTyp α)'
donde
varhz ::
(HzMonad , Data.Suitable.Suitable α) =>
String -> ExprTyp α -> (ExprTyp α)
¿Cuál es la tilde de todos modos? Muchas gracias.
No tengo la energía (esta noche) para escribir una respuesta completa, pero la respuesta corta es que este es otro ejemplo de suposiciones profundamente arraigadas acerca de que las cosas a nivel de tipo que son inyectables resultan ser falsas cuando escribes las familias se agregan a la mezcla. La tilde es una afirmación de igualdad de tipo. –
Ah, ahora entiendo, no hay problemas. Gracias por la nota. Cómo evitarlo es otra historia, que todavía estoy tratando de resolver. – gatoatigrado