当与衍生的实例在Haskell工作,是否有可能导出函数对于任意类型的,或者是我们限于特定功能?

有帮助吗?

解决方案

可以导出在Haskell 98以下类的实例:公式,奥德,枚举,IX,有界,读取和显示

使用GHC扩展还可以得到下面的类的实例:分型,数据,函子,可折叠和Traversable的。还有一个GHC扩展,允许一个NEWTYPE从其执行类型派生实例。

您无法获得任意类的实例的原因很简单,哈斯克尔不知道如何产生必要的功能,而无需了解有关类别的专业知识。

其他提示

您仅限于特定的类,在什么样的编译器知道如何得出你的术语。使用预处理程序,或模板哈斯克尔,你可以自己编写了新的派生机制,如果你知道的一般方法产生的特定类型的函数的实现。

在其它两个答案是正确的。但是,如果你需要更多的,也有上hackage,可以处理更多的一些软件包。我喜欢 Data.Derive 了很多,因为你可以直接生成的源代码(兼容性)或把它挂到模板哈斯克尔在编译的时候做。广泛的课程已经被支持,这是很容易的添加对自己的支持。 )

- :总结:对于一个该死细库广告间距

要添加到唐的回答是:推导数据类型的自定义功能调用的 泛型编程 的并有一个许多关于这些文献的的。预处理程序和模板哈斯克尔是不是唯一的解决方案;观看概述论文该文献中的其他选项的列表中的一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top