2013-08-30 2 views
20

Так, в Haskell, это очень легко сделать это:Как автоматически генерировать (и увидеть код) Читать и Показать в Haskell

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

Это здорово, но я хотел бы быть в состоянии передать некоторые данные в виде строки из Haskell на язык Elm. Языки достаточно похожи, что, если бы у меня была реализация Haskell Read, я бы мог легко преобразовать ее в Elm вручную.

Проблема в том, что когда я использую вывод, функция автоматически генерируется, но я не могу увидеть, что она делает.

Мне интересно, есть ли способ автоматически генерировать код для синтаксического анализа и отображения с использованием Read и Show, чтобы я мог действительно увидеть сам код?

ответ

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: 

 Смежные вопросы

  • Нет связанных вопросов^_^