カリー化単語

カレーカ

  • 0
  • 0
掲示板をみる(3)
  • twitter
  • facebook
  • はてな
  • LINE
  • ほめる(0)
  •  
  •  
  •  
  •  
  • その他

もしかして? → カレー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りはカレーのそれと完全に一致している。だからカレー化と書けないこともないが、なんだかよくわからないことになってしまうので、カリー化と表記される。

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

関連動画

関連項目

この記事を編集する

掲示板

  • 1ななしのよっしん

    2019/07/16(火) 16:52:06 ID: JShmN+5Mec

    全然利点が分からない……。
    偉い人たちが積極的に使ってるということはそれなりの利点が絶対にあるのだろうけど、には難しすぎますw
    カリー化しないと実現できない操作」とかってあるのかな?

  • 2ななしのよっしん

    2020/03/10(火) 01:33:35 ID: BU3Rf1Ddvi

    意味論とかを考えてる人には論理を見通し良く扱いやすいものにするために必須らしい
    データベースの圏の双関手としてデータの直積を自然に構成するのに使うとかなんとかかんとか
    データの変換とか格納の「効率の良さ」を感覚じゃなくアルゴリズム的に導くということらしい
    ようするに具としてプログラム使ってる人にはあんまり恩恵はないということですな

  • 3ななしのよっしん

    2020/08/08(土) 21:21:42 ID: H7QFlwzpl/

    単純に関数カリー化されていると部分適用をすることができるからラムダ式を書く手間が省けるって言うのとポイントフリースタイルが使えるっていうのじゃね?(要するに高階関数が使いやすい)

おすすめトレンド

急上昇ワード改

最終更新:2020/10/25(日) 21:00

ほめられた記事

最終更新:2020/10/25(日) 21:00

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

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

OK

追加に失敗しました。

OK

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

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

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

OK

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

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

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

TOP