2013-08-30 8 views
20

Così, in Haskell, è davvero semplice per farlo:Come generare automaticamente (e vedere il codice per) Leggere e Show di Haskell

data Foo = Bar | Baz 
    deriving (Read, Show) 

Questo è grande, ma mi piacerebbe essere in grado per passare alcuni dati come una stringa da Haskell alla lingua Elm. Le lingue sono abbastanza simili che, se avessi un'implementazione Haskell di Read, potrei facilmente convertirlo a mano a Elm.

Il problema è che quando utilizzo la derivazione, la funzione viene generata automaticamente, ma non riesco a vedere effettivamente cosa fa.

Mi chiedo, c'è un modo per generare automaticamente il codice per l'analisi e la visualizzazione utilizzando Leggi e Mostra, in modo che io possa effettivamente vedere il codice stesso?

risposta

27

È possibile utilizzare l'opzione GHC il -ddump-deriv per vedere il codice per le istanze derivate:

ghc -ddump-deriv test.hs 
[1 of 1] Compiling Test    (test.hs, test.o) 

==================== Derived instances ==================== 
Derived instances: 
    instance GHC.Show.Show Test.FooBar where 
    GHC.Show.showsPrec _ Test.Foo = GHC.Show.showString "Foo" 
    GHC.Show.showsPrec _ Test.Bar = GHC.Show.showString "Bar" 
    GHC.Show.showList = GHC.Show.showList__ (GHC.Show.showsPrec 0) 


Generic representation: 

    Generated datatypes for meta-information: 

    Representation types: 
Problemi correlati