jmi*_*ite 21 serialization parsing haskell typeclass deriving
所以,在Haskell中,执行此操作非常简单:
data Foo = Bar | Baz
deriving (Read, Show)
Run Code Online (Sandbox Code Playgroud)
这很棒,但我希望能够将一些数据作为字符串从Haskell传递给Elm语言.语言足够相似,如果我有一个Haskell实现的Read,我可以轻松地将它转换为Elm.
问题是,当我使用派生时,该函数会自动生成,但我实际上无法看到它的作用.
我想知道,有没有办法自动生成解析和显示使用Read和Show的代码,这样我才能真正看到代码本身?
ben*_*ofs 27
您可以使用-ddump-derivGHC选项查看派生实例的代码:
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:
Run Code Online (Sandbox Code Playgroud)
对于堆栈:
stack build --ghc-options="-ddump-deriv"
Run Code Online (Sandbox Code Playgroud)
在我的具体情况下的输出是: .stack-work/dist/x86_64-linux-nix/Cabal-2.4.0.1/build/app/app-tmp/src/