2013-08-30 24 views
20

Yani, Haskell, bunu yapmak gerçekten kolaydır:otomatik Haskell Okuma ve Göster üretmek (ve kodunu bakınız) Nasıl

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

Bu harika ama ben edebilmek istiyorum bazı verileri Haskell'den Elm diline bir dizi olarak iletmek için. Dilleri, bir Haskell Read okumasına sahip olsaydım, elm ile kolayca Elm'e dönüştürebildiğim kadar benzerler.

Sorun türetmek kullandığınızda, işlev otomatik olarak oluşturulur, ama aslında ne işe yaradığını göremiyorum vardır. Aslında kodun kendisini görebilsin diye

merak ediyorum

, otomatik ayrıştırma ve Okuma ve Göster kullanarak gösteren kodu oluşturmak için bir yol var mı?

cevap

27

Sen türetilmiş örnekleri için kodunu görmek için -ddump-deriv GHC seçeneğini kullanabilirsiniz:

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: