parsing - 如何在 Haskell 中查看派生实例/派生的生成代码

标签 parsing haskell serialization typeclass deriving

因此,在 Haskell 中,这样做真的很容易:

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

这很棒,但我希望能够将一些数据作为字符串从 Haskell 传递到 Elm 语言。这些语言非常相似,如果我有 Read 的 Haskell 实现,我可以轻松地将其手动转换为 Elm。

问题是,当我使用派生时,函数会自动生成,但我实际上看不到它的作用。

我想知道,有没有一种方法可以使用 Read 和 Show 自动生成用于解析和显示的代码,以便我可以真正看到代码本身?

最佳答案

您可以使用 -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:

关于parsing - 如何在 Haskell 中查看派生实例/派生的生成代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18538055/

相关文章:

java - 使用 SimpleDateFormat 将具有 GMT 时区的字符串解析为 Date

java - RMI 方法中的参数

c++ - C++实现序列化的数据结构对齐

parsing - ANTLR4 中上下文相关的空白处理

javascript - 无法使用 .indexOf() 找到数组索引

java - 使用 Jackson 解析没有标识符的 JSON 对象

haskell - 将固定长度向量函数应用于较长的固定长度向量的初始部分

haskell - 如何在模板haskell中使用getQ和putQ?

haskell - Show Haskell 的实例

java - Xml反序列化不适用于Xstream