composing functions

August 2023

import functools
import operator

def compose(a, b): return lambda x: a(b(x))

def square(x): return x * x

def double(x): return x * 2

# double then square
op = compose(square, double)
print(op(5))
# 100

# passing operator as argument
numbers = [1, 2, 3, 4, 5]
print(functools.reduce(operator.add, numbers))
# 15