Sono solo curioso perché devo scrivere questo,spiegazione per "famiglia sinonimo di tipo illegale"
instance (HzMonad , Data.Suitable.Suitable α, γ ~ ExprTyp α) => VarDecl γ where
var = varhz
invece di questo
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 α)'
dove
varhz ::
(HzMonad , Data.Suitable.Suitable α) =>
String -> ExprTyp α -> (ExprTyp α)
Che cosa è la tilde comunque? Grazie mille.
Non ho l'energia (stasera) per scrivere una risposta completa, ma la risposta breve è che questo è ancora un altro esempio di ipotesi profondamente radicate sulle cose a livello di testo essendo iniettive che si rivelano false quando si scrive le famiglie vengono aggiunte al mix. La tilde è un'asserzione di uguaglianza di tipo. –
Ah, capisco ora, nessun problema. Grazie per il messaggio. Come girarlo è un'altra storia, che sto ancora cercando di capire. – gatoatigrado