JavaScriptでのカリー化(Currying)についてのガイド


カリー化とは、複数の引数を取る関数を、引数を一つずつ受け取る関数のチェーンに変換するプロセスです。これにより、関数の一部の引数を固定した新しい関数を作成することができます。具体的な手順は以下の通りです。

  1. カリー化したい関数を定義します。例えば、2つの引数を受け取る足し算の関数を考えます。
function add(x, y) {
  return x + y;
}
  1. カリー化関数を作成します。この関数は最初の引数を受け取り、新しい関数を返します。この新しい関数は、最初の引数と合わせて残りの引数を受け取るようになります。
function curry(func) {
  return function curried(...args) {
    if (args.length >= func.length) {
      return func(...args);
    } else {
      return function (...moreArgs) {
        return curried(...args, ...moreArgs);
      }
    }
  };
}
  1. カリー化関数を使用して新しい関数を作成します。
const curriedAdd = curry(add);
  1. 新しい関数を使用して引数を部分的に適用します。これにより、既存の関数を固定した新しい関数が作成されます。
const add2 = curriedAdd(2);
console.log(add2(3)); // 結果: 5

上記の例では、add関数をカリー化するためのcurry関数を定義しました。curry関数は、関数の引数の数をチェックし、十分な引数が渡された場合は元の関数を実行し、そうでない場合は新しい関数を返します。curried関数は再帰的に呼び出され、引数を累積していきます。

カリー化は、関数の合成や再利用性を高めるための強力なテクニックです。複雑な関数をシンプルな関数のチェーンに変換することで、コードの可読性や保守性を向上させることができます。

この方法を使って、JavaScriptでのカリー化の基礎を学び、より高度な関数合成や柔軟なコーディングを実現してみてください。