Haskell中的代数数据类型(ADTs)可以通过派生它们自动成为一些类型化类的实例(如Show
,Eq
)。
data Maybe a = Nothing | Just a
deriving (Eq, Ord)
我的问题是,这是如何工作的,即Haskell如何知道如何实现派生类型类的派生类ADT函数?
另外,为什么deriving
只限于某些类型类?为什么我不能编写我自己可以派生的类型类?
发布于 2018-05-03 07:47:27
派生是Haskell的一个工具,可以让你编写自己的派生机制。
GHC用于提供一个名为Generic Classes的可扩展类型扩展,但它很少使用,因为它有点弱。现在已经取消了,正在进行工作以整合本文所述的新的通用推导机制:http : //www.dreixel.net/research/pdf/gdmh.pdf
有关更多信息,请参阅:
发布于 2018-05-03 08:32:13
以下是如何派生这些类型类的说明:http : //www.haskell.org/onlinereport/derived.html#derived-appendix
https://stackoverflow.com/questions/-100003321
复制相似问题