Scalaの関数型プログラミングにおける**「カリー化(Currying)」**とは、複数の引数を取る関数を、1つの引数を取る関数の連鎖として定義・変換する手法です。数学者ヘンリー・カリー(Haskell Curry)にちなんで名づけられました。
カリー化の概要
通常、複数の引数を取る関数は次のように定義されます:
この関数を「カリー化」すると、以下のように書くことができます:
ここで、curriedAdd は 引数 x を受け取り、引数 y を取る新たな関数を返すという形式になります。
カリー化の利点
-
部分適用が可能
一部の引数だけを与えて関数を生成できます: -
関数合成や高階関数と相性が良い
カリー化は関数型スタイルにおいて、関数の組み合わせや抽象化を自然に行う助けとなります。 -
ライブラリやAPI設計における柔軟性
型安全な形で引数の適用順を制御できます。特に複雑なロジックの構築時に有用です。
カリー化関数の定義と使用例
関数のカリー化変換
Scalaの標準ライブラリには、通常の関数をカリー化関数に変換する機能もあります:
まとめ
| 特徴 | 内容 |
|---|---|
| 定義形式 | def func(x: A)(y: B): C |
| 利用目的 | 引数の部分適用、柔軟な関数合成 |
| メリット | 高階関数との親和性、コードの再利用性向上 |
Scalaでは関数型プログラミングの強力な要素として、カリー化を通じた関数の再利用性と柔軟性の向上が非常に重要です。
生成日:2025/05/04