Supponiamo di definire un GADT per il confronto di modelli:confronto runtime dei tipi per il sollevamento di strutture dati polimorfi in GADTs
data EQT a b where
Witness :: EQT a a
È quindi possibile dichiarare una funzione EQT con la seguente firma di tipo:
eqt :: (Typeable a, Typeable b) => a -> b -> Maybe (EQT a b)
... tale che EQT xy restituisce Proprio testimone se typeOf x == t ypeOf y --- o altrimenti a Niente?
La funzione eqt consentirebbe di sollevare strutture di dati polimorfiche ordinarie in GADT.
Questo è pulito! Grazie. –
Compresso sicuro fino a quando nessuno ha effettuato un'istanza 'Data.Typeable' errata su qualcosa. ('derivante Typeable' è sempre sicuro.) –
Si noti che in questi giorni' eq' è disponibile nel modulo 'Data.Typeable' come [' eqT'] (https://hackage.haskell.org/package/base-4.9 .0.0/docs/Data-Typeable.html # v: EQT) –