カリー化
理論計算機科学の分野では、カリー化を利用すると、複数の引数をとる関数を、一つの引数のみを取る複数の関数のラムダ計算などの単純な理論的モデルと見なして研究できるようになる。圏論ではカリー化の概念を、デカルト閉圏における冪対象の普遍性に見出せる。適当な2つの対象の積から別の対象への射 f : X × Y → Z {\displaystyle f:X\times Y\to Z} に対して、射 g : X → Z Y {\displaystyle g:X\to Z^{Y}} が一意に対応する。
カリー化をする現実の動機の1つに、カリー化することで後述する部分適用が行いやすくなることが挙げられる。たとえば、加算を行う関数 (+) をカリー化してから、最初の引数だけに 1 を適用すれば、インクリメント用の関数が簡単に作れる。
カリー化を基盤としているプログラミング言語もある。特にMLとHaskellでは関数は常に一つの引数のみを取り、複数の引数を取る関数とは、単にネストされた複数の一引数関数の糖衣構文にすぎない。第一級関数を扱える言語、たとえばLISP、Scheme、F#、Scala、Erlang、Eiffel、Perl、Ruby、Python、R言語、S言語、JavaScript、Swiftなどでは、カリー化関数を作ることができる。