较高的类型与高阶类型的歧义



在上一个问题中,我问为什么在java中不声明单子接口?在那里,我收到了布莱恩·戈兹(Brian Goetz)的评论,说我应该称其为"高阶类型"更高 changed 类型"。

现在,我阅读了有关类型系统的更多信息,并且了解了更高的类型的概念。但是,我仍然对这些术语感到困惑。我试图使用Google独自自欺欺人,但是似乎没有一个明确的答案。因此,我的问题是以下术语的确切含义是什么:

  • 高阶类型
  • 更高的类型
  • 高阶类型

是否存在所有三个术语?它们之间有区别吗?有什么不同?编程语言之间的含义会有所不同吗?

我还注意到stackoverflow具有多个标签:

  • 高阶类型
  • 高态型

但是,这两个都没有标签Wiki。

遵循此博客文章,术语高阶类型似乎是更高含义的类型更高的常见术语等级类型高阶类型可能是当我感到困惑时我刚刚构成的术语。

更高的类型

具有更高的类型,可以接收一种类型的参数,该参数本身是一种通用类型:

interface Foo<T<_>> {
    T<String> get();
}

这是声明Monad接口的必要条件。

更高的等级类型

具有较高等级类型的情况,可以接收一个类型仍然包含未指定类型参数的参数:

interface Bar {
    void foobar(<E> List<E> list);
}

不幸的是,较高的等级类型检查/推理是不可决定的。

最新更新