Python における functools.partial を用いたカリング

Beginner

This tutorial is from open-source community. Access the source code

はじめに

関数型プログラミングにおいて、カリングは、複数の引数を取る関数を、それぞれが 1 つの引数を取る関数のシーケンスに変換する技術です。Python では、functools.partial()関数を使ってカリングを実装することができます。

カリング関数

与えられた関数fnをカリングする関数curry(fn, *args)を書きます。この関数は、与えられた引数argsが部分的に適用された状態でfnと同じように振る舞う新しい関数を返す必要があります。

from functools import partial

def curry(fn, *args):
  return partial(fn, *args)
add = lambda x, y: x + y
add10 = curry(add, 10)
add10(20) ## 30

まとめ

このチャレンジでは、Python においてfunctools.partial()を使ってカリング関数を実装する方法を学びました。カリング関数を使うと、引数を関数に部分的に適用し、残りの引数を受け取る新しい関数を返すことができます。