Cas*_*ash 9 haskell types typeclass derived-instances
在Haskell中使用派生实例时,是否可以派生任意类型的函数,还是仅限于特定函数?
您可以在haskell 98中派生以下类的实例:Eq,Ord,Enum,Ix,Bounded,Read和Show.
使用ghc扩展,您还可以派生以下类的实例:Typeable,Data,Functor,Foldable和Traversable.还有一个ghc扩展,允许newtype从其实现类型派生实例.
您无法派生任意类的实例,原因很简单,因为如果没有关于相关类的特殊知识,haskell将不知道如何生成必要的函数.
另外两个答案是正确的.但是如果你需要更多,那么hackage上的一些软件包可以处理更多.我喜欢Data.Derive很多,因为你可以直接生成源代码(为了兼容性)或者将它挂钩到Template Haskell来在编译时完成它.已经支持各种类,并且很容易为您自己添加支持.摘要:一个该死的精美图书馆的广告宣传:-)