# 柯里化

var foo = function(a) {
return function(b) {
return a * a + b * b;
}
}


## 動机

### 示例

${\displaystyle f(x,y)}$

${\displaystyle h_{x}(y)=f(x,y)}$.

${\displaystyle h_{x}=(y\mapsto f(x,y))}$,

${\displaystyle h(x)=(y\mapsto f(x,y))}$

${\displaystyle h=(x\mapsto (y\mapsto f(x,y)))}$

${\displaystyle {\text{curry}}=(f\mapsto h)}$

${\displaystyle {\text{curry}}(f)=h}$

${\displaystyle f=((x,y)\mapsto f(x,y))}$

${\displaystyle f(x,y)={\frac {y}{x}}}$

${\displaystyle g=h_{2}=h(2)=(y\mapsto f(2,y))}$

${\displaystyle g(y)=h_{2}(y)=h(2)(y)=f(2,y)={\frac {y}{2}}}$

${\displaystyle g(3)=h_{2}(3)=h(2)(3)=f(2,3)={\frac {3}{2}}.}$

${\displaystyle f(x,y,z,w)}$

${\displaystyle h_{x}=((y,z,w)\mapsto f(x,y,z,w))}$

${\displaystyle h_{x}(y,z,w)=f(x,y,z,w)}$.

${\displaystyle h=(x\mapsto ((y,z,w)\mapsto f(x,y,z,w)))}$

${\displaystyle x\mapsto (y\mapsto (z\mapsto (w\mapsto f(x,y,z,w))))}$

${\displaystyle x\mapsto y\mapsto z\mapsto w\mapsto f(x,y,z,w)}$

## 定義

${\displaystyle f\colon X\to Y}$ 表示從 ${\displaystyle X}$ 映射到 ${\displaystyle Y}$ 的函數${\displaystyle f}$

${\displaystyle X\to Y}$ 表示從 ${\displaystyle X}$${\displaystyle Y}$ 的所有函數。

${\displaystyle X\times Y}$表示有序對，即笛卡爾乘積。

${\displaystyle {\text{curry}}(f)\colon X\to (Y\to Z)}$

### 函數空間

${\displaystyle {\text{curry}}:{\text{Hom}}(X\times Y,Z)\to {\text{Hom}}(X,{\text{Hom}}(Y,Z)),}$

uncurrying 是反向的映射。如果從 ${\displaystyle X}$${\displaystyle Y}$${\displaystyle Y^{X}}$集合為連續函數 給出了紧致开拓扑緊緻開拓撲，而且如果 ${\displaystyle Y}$空間是局部豪斯多夫緊緻的，那麼 ${\displaystyle {\text{curry}}}$是一個連續函數，也是同胚。儘管可能有更多情況，當 ${\displaystyle X}$${\displaystyle Y}$${\displaystyle Y^{X}}$緊生成的時候，情況都是相同的。

${\displaystyle {\text{curry}}:Z^{X\times Y}\to (Z^{Y})^{X}}$

{\displaystyle {\begin{aligned}&&{\text{eval}}:Y^{X}\times X\to Y\\&&(f,x)\mapsto f(x)\end{aligned}}}

${\displaystyle Y^{X}}$是緊緻開放的，而且 ${\displaystyle Y}$局部緊緻的豪斯多夫時，那上述式子是連續的。這兩個結果對於確立同倫的連續性非常重要，亦即當 ${\displaystyle X}$是單位區間 ${\displaystyle I}$，所以 ${\displaystyle Z^{I\times Y}\cong (Z^{Y})^{I}}$能想成 就是從 ${\displaystyle Y}$${\displaystyle Z}$的兩個函數的同倫，或者等價地，是 ${\displaystyle Z^{Y}}$中的單個（連續）路徑。

### 邏輯

Curry-Howard下，柯里化和对偶柯里化的存在相當於邏輯定理${\displaystyle (A\land B)\to C\Leftrightarrow A\to (B\to C)}$，因為多元组（型別積, product type）對應於邏輯中的且連接，而函數類型對應於蕴涵

## 历史

「科里化」一词由克里斯托弗·斯特雷奇创造，以逻辑学家哈斯凱爾·加里命名。另外一个名词 "Schönfinkelisation" 则以Moses Schönfinkel命名。在数学历史中，这个原理可以追溯到1893年戈特洛布·弗雷格的工作。