嵌套时等效类型的名称(例如Async <async <t>&gt;等效于Async <t>)</t> </async <t>

时间:2013-05-23 18:37:15

标签: generics types language-agnostic nested nomenclature

我正在寻找用于引用嵌套下等效的泛型类型的名称。也就是说,通过将类型嵌套在自身内部,您不会获得“不同的值”。

例如,Async<Async<int>>可以被视为等同于Async<int>,我想知道实际上具有此等价属性的Async类型的内容。

// Async<int> == Async<Async<int>>
Async<int> r1 = Async.Done(Async.Done(1))
Async<Async<int>> r2 = r1
Async<int> r3 = r2

我的直觉是将它们称为“折叠类型”或“嵌套下的幂等”,但我真的不知道正确的术语是什么。

1 个答案:

答案 0 :(得分:2)

我想你称之为幂等类型的构造函数。然而,我从未见过这种情况,除非在模态类型理论中有某种类型的形式(相当深奥)。对于内置/抽象类型构造函数,它根本没有意义!在任何设计合理的类型系统中,如果C(T)= T( injectivity ),您将只有C(C(T))= C(T)。特别是,Async 也应该是幂等的,因为这些相应类型的对象抽象的同步数存在差异,这会产生计算差异。