在上一个问题中,我问为什么不能用Java声明Monad接口?。在那里,我得到的评价从作者Brian Goetz说,我应该叫“高阶类型”,“高kinded类型”。
现在,我阅读了有关类型系统的更多信息,并且了解了更高种类的类型的概念。但是,我仍然对这些术语感到困惑。我试图使用Google自己消除它们的歧义,但是似乎没有一个明确的答案。因此,我的问题是以下术语的确切含义是什么:
这三个术语都存在吗?它们之间有区别吗?有什么区别?编程语言之间的含义是否有所不同?
我还注意到StackOverflow有多个标签:
但是,两者都没有标签Wiki。
在此博客文章之后,术语“高阶类型”似乎是“较高种类的类型”和“较高等级的类型”的通用术语。高阶种类可能是我感到困惑时刚提出的一个术语。
对于更高种类的类型,可以接收本身是泛型类型的类型参数:
interface Foo<T<_>> {
T<String> get();
}
这是声明Monad
接口所必需的。
对于较高级别的类型,可以接收其类型仍然包含未指定的类型参数的参数:
interface Bar {
void foobar(<E> List<E> list);
}
不幸的是,更高等级的类型检查/推断是不确定的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句