Generics 嵌套时等效的类型的名称(例如,Async<;Async<;T>;等效于Async<;T>;)

Generics 嵌套时等效的类型的名称(例如,Async<;Async<;T>;等效于Async<;T>;),generics,types,language-agnostic,nested,nomenclature,Generics,Types,Language Agnostic,Nested,Nomenclature,我正在寻找用于引用嵌套下等价的泛型类型的名称。也就是说,将类型嵌套在其内部不会得到“不同的值” 例如,可以将Async视为等同于Async,我想知道如何调用实际具有此等效属性的Async类型 // Async<int> == Async<Async<int>> Async<int> r1 = Async.Done(Async.Done(1)) Async<Async<int>> r2 = r1 Async<int>

我正在寻找用于引用嵌套下等价的泛型类型的名称。也就是说,将类型嵌套在其内部不会得到“不同的值”

例如,可以将
Async
视为等同于
Async
,我想知道如何调用实际具有此等效属性的
Async
类型

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

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

我想你会称之为幂等元类型构造函数。然而,我从未见过这种情况出现,除了模态类型理论中的某些类型模态(这是相当深奥的)。对于内置/抽象类型构造函数来说,这根本没有意义!在任何适当设计的类型系统中,如果C(T)=T(内射性),则只有C(C(T))=C(T)。特别是,
Async
也不应该是幂等的,因为这两种类型的对象抽象的同步数量不同,这就造成了计算上的差异。

这种语言是不可知的吗?是的。我假设这是一个类型理论术语,因为我在实践中使用的语言中没有遇到过它。