So, in Haskell, it's really easy to do this:
data Foo = Bar | Baz deriving (Read, Show)
This is great, but I'd like to be able to pass some data as a string from Haskell to the Elm language. The languages are similar enough that, if I had a Haskell implementation of Read, I could easily convert it to Elm by hand.
The problem is, when I use deriving, the function is automatically generated, but I can't actually see what it does.
I'm wondering, is there a way to automatically generate the code for parsing and showing using Read and Show, so that I could actually see the code itself?
You can use the the
-ddump-deriv GHC option to see the code for derived instances:
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:
stack build --ghc-options="-ddump-deriv"
Output in my specific case is: