はじめに
関数合成は、関数型プログラミングで使用される技術であり、2 つ以上の関数を結合して新しい関数を形成します。Python では、functools.reduce()関数を使用して、右から左への関数合成を行うことができます。
関数合成は、関数型プログラミングで使用される技術であり、2 つ以上の関数を結合して新しい関数を形成します。Python では、functools.reduce()関数を使用して、右から左への関数合成を行うことができます。
compose(*fns) という名前の関数を書きます。この関数は、1 つ以上の関数を引数として受け取り、入力関数を右から左に合成した結果である新しい関数を返します。最後の(最も右の)関数は 1 つ以上の引数を受け取ることができます。残りの関数は単項関数でなければなりません。
from functools import reduce
def compose(*fns):
return reduce(lambda f, g: lambda *args: f(g(*args)), fns)
add5 = lambda x: x + 5
multiply = lambda x, y: x * y
multiply_and_add_5 = compose(add5, multiply)
multiply_and_add_5(5, 2) ## 15
このチャレンジでは、Python において右から左への関数合成を行うためにfunctools.reduce()関数をどのように使用するかを学びました。また、compose()という名前の関数を書きました。この関数は、1 つ以上の関数を引数として受け取り、入力関数を右から左に合成した結果である新しい関数を返します。