【发布时间】:2014-09-29 13:05:06
【问题描述】:
这两者在 GHC 中有什么区别。它们的预期用途似乎相似,但 deriving (Data) 已经存在了一段时间,而 deriving (Generic) 最近才被添加到 GHC 中。
deriving (Generic) 基本上是“升级”到deriving (Data) 还是这两个类有不同的目的?
【问题讨论】:
-
这些只是类型类——您可以查看方法并推断它们的用途。简而言之,
Data提供了遍历数据结构的灵活方法,而Generic提供了一种将用户定义的结构转换为单个“产品总和”形式的方法;然后由用户定义如何遍历这个产品总和 AST。 -
您可能对一些论文感兴趣:dreixel.net/research/pdf/gdmh.pdf(Generic 简介)、haskell.org/haskellwiki/Research_papers/Generics(概述中的一些比较,以及在
Data.Data上废弃你的样板以获取信息)。这些通常都非常易读。