在之前的一个问题中,我问了为什么不能用Java声明Monad接口?。在那里,我收到了Brian的评论,说我应该把“高阶类型”称为“高级类型”。
现在,我读到了更多关于类型系统的内容,我理解了更高类型类型的概念。然而,我仍然对这些术语感到困惑。我试着用谷歌自己来消除他们的歧义,但是似乎没有一个明确的答案。因此,我的问题是,以下几个词的确切含义是什么:
这三个条款都存在吗?他们之间有什么区别吗?有什么关系?不同的编程语言是否有不同的含义?
我还注意到StackOverflow有多个标记:
然而,没有标记wiki为他们两个。
发布于 2016-11-06 19:13:00
继这博客文章之后,“高阶类型”一词似乎是“较高类型”和“高等级类型”的通用术语。更高的等级可能是我在困惑的时候编造出来的一个词。
高类
对于较高类型,可以接收本身为泛型类型的类型参数:
interface Foo<T<_>> {
T<String> get();
}这是声明Monad接口所必需的。
高秩型
对于级别较高的类型,可以接收类型仍包含未指定类型参数的参数:
interface Bar {
void foobar(<E> List<E> list);
}不幸的是,更高级别的类型检查/推理是不可判定的。
https://stackoverflow.com/questions/38003467
复制相似问题