カリー化 単語

カレーカ

1.0千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

もしかして? → カレー2.0

カリー化(Currying)とは、複数の引数をとる関数を、引数を一つずつとる関数に変換することである。

概要

関数 z = f(x, y) を例に説明すると、h = g(x), z = h(y) (g, hは関数)のようにx, y の2つの引数をとって z を出力する関数 f から、xを引数にとって「y を引数にとって z を出力する関数 h」を出力する関数 g を定義することをカリー化という。

上記で引数が2つの時を z = f(x, y) = h (y) = g(x)(y) のような表記法を許すなら、引数が3つなら、z = f(x, y, w) のとき、h = g(x), i = h(y), z = i(w) (g, h, i は関数)といった形を z = g(x)(y)(w)と書くことができる。

これを帰納的に適用すれば、

n項演算子 ⇒ n-1個の変数から生成された1項演算子

という変形をすることができる。

このgは関数を返り値とする関数、つまり高階関数になっている。Haskellではすべての関数が標準でカリー化されているため、重要な概念となっている。

足し算演算子"+"は2つの引数を取る中置記法の二項演算子である。一般的な表記は以下の通り。

1 + 2

この"+"を単なるアルファベットとみなせば、普通の二変数関数と同じように書くことができる。

(+) 1 2

ここでカリー化を"+"に適用し、第一変数の1を作用させる。

(+ 1) 2

2つの引数足し算する二項演算子"+"が、カリー化により一つの引数に1を足す一項演算子"+1"にすることができた。

この書き方では分かりにくいが、以下ようになっている。

 f(x, y) = x + y

↓ カリー化

gx(y) = x + y

これは自然数自体がある種の「演算子」の働きを持つことを示唆しているが、厳密な話を気にする必要はあまりないだろう。

名前の由来

プログラミング言語Haskell名前の由来である数学者Haskell B. Curryに由来する(Haskell開発者とは別人)。同一人物の姓と名が別々のものに使われるというのはしいといえる。

お気づきの通り、Curryりはカレーのそれと完全に一致している。だからカレー化と書けないこともないが、なんだかよくわからないことになってしまうので、カリー化と表記される。

どんな食材を使ってもカレー粉を入れて煮込めばなんでもカレーという料理になってしまうみたいな話が数学的にも可だ…と言うことかもしれない。

関連動画

関連項目

この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2025/01/18(土) 14:00

ほめられた記事

最終更新:2025/01/18(土) 13:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP