Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 一阶参数多态性与一阶函数_Scala_Functional Programming_Lambda Calculus - Fatal编程技术网

Scala 一阶参数多态性与一阶函数

Scala 一阶参数多态性与一阶函数,scala,functional-programming,lambda-calculus,Scala,Functional Programming,Lambda Calculus,我正在读一篇论文,第一句话是 使用Java 5和C#2.0,一阶 引入参数多态性 在主流的面向对象技术中 名称下的编程语言 非专利药 我不知道什么是一阶参数多态性,我也不太了解什么是一阶函数,我知道高阶函数是接受函数并返回函数的函数,但我不知道什么是零阶函数,一阶函数。 我看到了这样一个解释: f->g是第零阶f->g-> h是第一个订单f->g->h->i 是二等的等 有人能给我解释一下这两个术语吗?对于高阶(又称高阶)参数多态性,首先值有一个类型,现在类型有一个类型,如果你把参数类型看作是类

我正在读一篇论文,第一句话是

使用Java 5和C#2.0,一阶 引入参数多态性 在主流的面向对象技术中 名称下的编程语言 非专利药

我不知道什么是一阶参数多态性,我也不太了解什么是一阶函数,我知道高阶函数是接受函数并返回函数的函数,但我不知道什么是零阶函数,一阶函数。 我看到了这样一个解释:

f->g是第零阶
f->g-> h是第一个订单
f->g->h->i 是二等的

有人能给我解释一下这两个术语吗?

对于高阶(又称高阶)参数多态性,首先值有一个类型,现在类型有一个类型,如果你把参数类型看作是类型函数的排序(类型的函数),例如
IEnumerable
是类型函数的一种*->*,当您将一个类型应用于此类型函数时,您将得到一个类型*。因此,在将参数类型(类型构造函数)视为类型函数的情况下,我们可以开始讨论高阶类型函数,一种可以接受/返回类型函数作为参数的类型函数。这就是所谓的高级多态性,它是Java&C等语言中缺乏的高度表达型系统特性。如果你了解C++模板,那么通过模板模板参数(是模板模板),有一个有限但不一致且几乎无用的支持。 你可能想知道为什么有这样一个功能会有用?它们允许人们表达更高层次的抽象和更通用的代码,比如单子和函子。标准Haskell 98支持更高种类的多态性

对于一阶函数示例,首先您必须了解lambda演算中的所有函数只接受一个参数,并且示例中的箭头实际上向右关联,因此这就是您实际拥有的:

f->g是第零阶。 f->(g->h)是第一个顺序,函数返回一个函数。 f->(g->(h->i))是二阶函数,函数返回一个函数,该函数返回一个函数

相同的“仅一个参数”也适用于类型、种类、排序(种类具有排序)函数