填充了类型参数的泛型类型的术语
Terminology for a generic type with type parameter filled in
填充了类型参数的泛型类型的正确术语是什么?这是一个非常常见的结构;我很惊讶地发现我不确定它到底应该叫什么。
换句话说:
如果square
是一个函数,那么square(2)
是一个函数调用。
如果 List
是 通用类型 ,那么 List<Int>
是...?
(如果重要的话,我正在使用 Kotlin,尽管在我看来,对于支持泛型的许多语言来说,术语应该是相同的。)
在Java,
List<T>
是 Generic Type.
List
是 Raw Type.
List<Integer>
是 Parameterized Type.
所有支持参数的类型都是通用类型。
When coding, one provides type arguments in order to create a parameterized type.
如果未提供类型参数,则会创建原始类型。
在 C++ 中,std::vector<int>
是 std::vector<T>
的 特化 ,std::array<int, N>
是 部分特化 个 std::array<T, N>
。
但是,这些是模板。正如 jaco0646 提到的,使用泛型的语言(例如 Java 和 Rust)通常称它们为 parameterized.
Haskell 中最接近的等价物是 typeclasses,它(有时)调用参数化泛型代码的等价物 instance。 (在面向对象语言中,一个实例指的是一个class的对象,但是Haskell没有class,所以没有歧义。)
填充了类型参数的泛型类型的正确术语是什么?这是一个非常常见的结构;我很惊讶地发现我不确定它到底应该叫什么。
换句话说:
如果square
是一个函数,那么square(2)
是一个函数调用。
如果 List
是 通用类型 ,那么 List<Int>
是...?
(如果重要的话,我正在使用 Kotlin,尽管在我看来,对于支持泛型的许多语言来说,术语应该是相同的。)
在Java,
List<T>
是 Generic Type.List
是 Raw Type.List<Integer>
是 Parameterized Type.
所有支持参数的类型都是通用类型。
When coding, one provides type arguments in order to create a parameterized type.
如果未提供类型参数,则会创建原始类型。
在 C++ 中,std::vector<int>
是 std::vector<T>
的 特化 ,std::array<int, N>
是 部分特化 个 std::array<T, N>
。
但是,这些是模板。正如 jaco0646 提到的,使用泛型的语言(例如 Java 和 Rust)通常称它们为 parameterized.
Haskell 中最接近的等价物是 typeclasses,它(有时)调用参数化泛型代码的等价物 instance。 (在面向对象语言中,一个实例指的是一个class的对象,但是Haskell没有class,所以没有歧义。)