多态种类的用途是什么?

16

多态类型是 Haskell 类型系统的一种扩展,由 UHC 支持,允许

data A x y = A (y x)

它被定义 (归类?) 为a -> (a -> *) -> *。它们有什么用处?

3个回答

11

一个可能的用法示例可以是使用Conal的TypeCompose以点自由样式组合单子变换器。

type MyT = StateT Foo :. MaybeT :. ContT Bar

(仅作为示例,我不知道人们将如何使用那些foos和bars...)

改为:

type MyT m = StateT Foo (MaybeT (ContT Bar m))

(除了使用 newtype 封装之外,这将具有相同的结果)

目前,您需要为不同种类复制组合器代码,而此扩展去除了重复并允许使用一段代码来控制它们所有。


11

向GHC添加多态kind

这个问题的背景可以追溯到更具表现力的kind系统的普遍动机

也就是说,将多态kind添加到Haskell中的总体原因是为了改善类型级编程的体验。目前Haskell中的类型级编程在本质上以一种未经类型检查的“kind”级别进行。更丰富的kind语言将使得Haskell中的类型级编程在一般情况下更加容易。

一个更具体的例子是从SYB风格的通用编程中删除(动态)Typeable约束(引用),以及改进高阶kind通用编程的整体支持。


1

它们非常有用,可以定义操作任意元数数据构造函数的函数!

一个具体的例子是一个函数,给定一个任意元数的数据构造函数,返回一个将给定构造函数包装在Some()中的新数据构造函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接