2013-08-30 7 views
20

Więc w Haskell, to naprawdę łatwo to zrobić:Jak automatycznie wygenerować (i zobaczyć kod) Czytaj i pokazać w Haskell

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

To jest dobre, ale chciałbym, aby móc przekazać pewne dane w postaci ciągu od Haskella do Wiązu. Języki są na tyle podobne, że gdybym miał wersję Haskella Read, mógłbym z łatwością przekonwertować ją na Elm ręcznie.

Problem polega na tym, że kiedy używam funkcji wyprowadzania, funkcja jest generowana automatycznie, ale nie widzę, co ona robi.

Zastanawiam się, czy istnieje sposób automatycznego generowania kodu do parsowania i pokazywania przy użyciu funkcji Odczyt i pokaz, aby mógł on faktycznie zobaczyć kod?

Odpowiedz

27

Można użyć opcji GHC z -ddump-deriv zobaczyć kod przypadkach pochodnych:

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: 
Powiązane problemy