Подтвердить что ты не робот

Как автоматически генерировать (и видеть код для) Чтение и показ в Haskell

Итак, в Haskell это очень легко сделать:

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

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

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

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

4b9b3361

Ответ 1

Вы можете использовать опцию -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: