2013-08-30 3 views
20

그래서, 하스켈,이 일을 정말 쉽게 :자동으로 하스켈에서 읽기와보기를 생성 (및 대한 코드 참조)하는 방법

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

이 중대하다,하지만 난 수 있도록하고 싶습니다 Haskell에서 Elm 언어로 문자열을 전달하는 것. 언어가 비슷하기 때문에, 하스켈에서 Read를 구현 한 경우 손으로 느릅 나무로 쉽게 변환 할 수 있습니다.

파생을 사용하면 함수가 자동으로 생성되지만 실제로 어떤 결과가 나오는지 확인할 수 없습니다.

나는 코드 자체를 실제로 볼 수 있도록 읽기 및 표시를 사용하여 파싱 및 표시하는 코드를 자동으로 생성하는 방법이 있습니까?

답변

27

당신은 파생 된 인스턴스에 대한 코드를 확인하여 -ddump-deriv GHC 옵션을 사용할 수 있습니다 :

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: