メニューを閉じる

テクノモバイルグループ

メニューを開く

2014.08.29

プログラミング

カリー化とか部分適用とかのお話

こんにちは、KTです。

今回はカリー化とか部分適用について簡単に紹介します。(あまり興味ない人が多そうな話題ですが・・・)

まずはカリー化から。

カリー化って?

複数の引数を受け取る関数を、最初の引数を受け取って、残りの引数を受け取る関数を返す関数に変換することをカリー化といいます。英語で書くとcurryなんですが、決して食べ物のカレーではなく、提唱者の名前らしいです。

 

上の説明だとピンと来ないですよね?

例えば

のように3つの引数を受け取る関数を

のように変換することです。引数ごとに分解したイメージですかね。

カリー化すると、もちろん関数の呼出方法も変わっちゃいます。

え?むしろ面倒になったじゃないかって?

確かにただ単にカリー化しただけでは分かりにくく面倒になるだけなので、むやみやたらにカリー化するのはオススメしません。

じゃあどんなときにカリー化すればいいのか。を次に説明します。

 

カリー化と部分適用

複数の引数を受け取る関数に対して、一部の引数を渡して残りの引数を受け取る関数を生成することを部分適用といいます。

関数の一部の引数を束縛(固定)してしまった関数を新たに作り出す。ということですね。

例えば、

のような、ログレベルとメッセージを受け取る関数があったときに、

のように毎回ログレベルを指定するのが面倒ってことありますよね?

おそらく、ほとんどの場合は

のようなログレベル毎のラッパー関数を作るのではないでしょうか?

 

ここで、カリー化と部分適用を使うと、ラッパー関数を作る必要を無くすことが出来ます。

まずはlogにカリー化を行って

次に、levelを束縛すると、

このように、ラッパー関数を作ることなくレベル毎のloggerを得ることが出来ました。

 

カリー化には、部分適用のために使う以外にも、いろいろと便利な使い方があるらしい(思い浮かばなかった)ので、是非頭の片隅にでも置いておいてください。

 

ちなみに、

  • 関数を引数ごとに分解すること→カリー化
  • 分解した関数にたいして、一部の引数を束縛すること→部分適用

ですので、お間違えの無い様。

間違えると怒る人がたくさん居ますので。


【テクノモバイルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』
https://qangaroo.jp/

最近の記事

SNS共有

X CLOSE
X CLOSE
X CLOSE