Così ho un tipo di datiCome creare un'istanza di lettura per un tipo di dati in Haskell
data SomeType a =
Type a |
Mix (SomeType a) (SomeType a)
Questo mio spettacolo istanza per SomeType
instance (Show a) => Show (SomeType a) where
show (Type a) = show a
show (Mix a b) = "(" ++ show a ++ " " ++ show b ++ ")"
Così
Mix (Type 5) (Type 4)
darebbe me
(5 4)
Ora voglio avere
read "(3 4)" :: SomeType Int
producono
(3 4)
o
read "(a b)" :: SomeType Char
produrre
(a b)
sono perso a come utilizzare la classe di leggere.
btw, il tuo esempio per 'SomeType char' non è quello che' show (Mix (tipo 'A') (tipo 'b')) ' avrebbe generato. – hvr
È possibile derivare sia - l'istanza Mostra e Leggi - con un 'derivando (Mostra, Leggi)' dopo il tipo di delcaricazione. Sebbene non generino il tuo output e input, sono un modo standard per mostrare (e talvolta leggere) i valori, ed è per questo che dovresti usarli al posto delle tue istanze. Se vuoi mostrarli in un modo diverso, usa una funzione separata e chiamala 'render' o così. – bzn