カリー化
ちなみにカレーライスのカリーではない。
数学者であり論理学者でもあったハスケル・カリー(Haskell Curry)の名前に由来しています。だって。
Sonnet3.5による説明
もちろんです。カリー化について、関数型プログラミングの知識がない人にもわかりやすく説明しましょう。
カリー化とは:
カリー化は、複数の引数を取る関数を、一度に1つの引数だけを受け取る一連の関数に変換する技法です。
簡単な例:
通常の関数:
`javascript
function add(a, b) {
return a + b;
}
console.log(add(2, 3)); // 5
`
カリー化された関数:
`javascript
function curriedAdd(a) {
return function(b) {
return a + b;
}
}
console.log(curriedAdd(2)(3)); // 5
`
カリー化の利点:
1. 部分適用:関数の一部の引数を「固定」して新しい関数を作れます。
`javascript
const addFive = curriedAdd(5);
console.log(addFive(3)); // 8
console.log(addFive(7)); // 12
`
2. 関数の組み立て:小さな関数を組み合わせて複雑な操作を作れます。
3. 依存性注入:この記事で説明されているように、外部の依存関係(例:データベースクライアント)を最初に渡し、その後実際のデータを渡すという形で関数を構成できます。
`javascript
function createUserUpdater(databaseClient) {
return function(userId, newData) {
// databaseClientを使ってユーザーを更新
}
}
const updateUser = createUserUpdater(myDatabaseClient);
updateUser(123, { name: "Alice" });
`
この例では、createUserUpdaterが最初にデータベースクライアントを受け取り、その後ユーザーIDと新しいデータを受け取る関数を返しています。これにより、データベースクライアントの詳細を隠蔽しつつ、必要な時だけユーザー更新の処理を行うことができます。
カリー化は、コードをより柔軟に、再利用しやすくする強力なテクニックです。特に依存性の管理や関数の部分適用において有用です。