繁体   English   中英

多态类型有什么用途?

[英]What are uses of polymorphic kinds?

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

data A x y = A (y x)

键入(kinded?)为a -> (a -> *) -> * (a- a -> (a -> *) -> * 它们有什么用?

一个可能的用法示例是使用圆锥形TypeCompose组成无点样式的monad变压器。

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

(仅作为示例,我不知道这些foo和bar会做什么。。)

代替:

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

(这将具有相同的结果除了newtype -wrappers)

当前,您需要复制不同种类的组合器代码,并且此扩展取消了重复,并允许使用一段代码来全部统治它们。

在GHC中添加多态类型

这个问题的背景通常是建立一种更具表现力的种类系统动机

也就是说,向Haskell添加多态类型的总体原因是为了改善类型级别编程的体验。 当前,Haskell中的类型级别编程以基本上没有类型的“ 种类 ”级别进行。 通常,更丰富的一种语言将使在Haskell中进行类型级别的编程更加容易。

一个更具体的示例是从SYB样式的泛型( 引用 )中删除(动态)可类型化约束,并改善对更高种类的泛型编程的总体支持。

当然,它们对于定义可以任意任意操作数据构造函数的函数很有用!

一个具体的示例可能是一个函数,该函数给定具有任意Arity的数据构造函数,然后返回一个将给定构造函数包装在Some()中的新数据构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM