n实验室咖喱
目录
想法
Currying是一个将两个变量上的操作转换为一个变量上操作的过程,该操作返回以第二个变量为参数的函数。该术语用于计算机科学和λ演算在这种情况下,一次只对一个变量进行操作在技术上通常很重要。但是范畴理论也将其视为自然同构在一个闭单体范畴,即普遍性的指数对象; 因此,它也被称为指数转置.
这个反向操作是,以简单的方式计算机科学,已调用解开褶皱.
Currying以以下名称命名哈斯凯尔·加里,根据斯蒂格勒同名律,因为它是由发明的莫西·施芬克尔(Moses Schönfinkel)(也许Curry帮助推广了lambda微积分的应用?)
定义
In-set理论
在集合论,currying转换功能在上定义产品集函数中的值功能集也就是说,从
我们咖喱 生产
根据公式
这只是应用功能集 .
依赖型理论
在依赖型理论,currying转换在依赖对类型到一系列元素,这些元素在相关函数类型也就是说,从
我们咖喱 生产
根据公式
这只是应用依赖函数类型 .
在lambda微积分和CCC中
类似地,在λ演算,currying是一种将多个参数中函数的研究简化为一个参数中的函数的方法。例如,如果是lambda项,其中的变量和自由发生(以便实际上是的“功能”和),lambda演算语法支持currified表达式,表示直观的表达一次提取一个变量。
后来(由Lawvere)观察到,这只是一个更普遍的“curryfication”的特例笛卡尔闭范畴(例如猫或不错的空间类别),其中有一个自然的语素双射:
实际上,笛卡尔闭范畴是lambda演算的模型。
一般来说
事实上,咖喱可以用任何(右)闭单体范畴。在这种情况下,currying转换态射谁的来源是一个张量积到一个态射目标是一个内部hom也就是说,从
我们咖喱 生产
咖喱在; 也就是说,是一个自然同构(在任何封闭的单体类中)。
当前使用哪个变量?
按照惯例,咖喱总是在最后的变量。这很好地符合了这样一个惯例,即产品在左侧关联,而内部homs在右侧关联。更明确地说,如果我们使用“'对于产品(即使它不是笛卡尔)和''表示内部hom(因此我们必须使用另一个符号,例如'',对于外部hom),那么我们不需要括号来概括currying
生产
通过咖喱几个一次又一次,我们转身
进入之内
这并不能概括为,这是一种方法,可以看出即使是非类型化的lambda演算也实际上有两个对象,其中一个是终端对象 其中一个可以发挥其他作用。
在一个封闭的编织单体类(例如关闭对称单体范畴,并包括笛卡尔闭合范畴,如以及lambda微积分的模型),我们还可以“curry through the first variable”或“co-curry”来生成映射
但计算机科学家(甚至是非常谨慎的数学家)会将此视为一种复合运算,其第一步是作文使用编织 .
在左闭单体范畴中,咖喱不存在,但协同咖喱存在。也许这个产品应该在右边的左闭单体类别中关联?
另请参阅
参考文献
为了讨好依赖型理论,请参阅
上次修订时间:2023年1月7日01:28:24。请参阅历史获取所有贡献的列表。