I'm trying to define multiplication over functions in Python, in pseudocode this is:
This should return a function in x, given f(x), g(x)
multiply_two_functions((f(x), g(x)) = f(x) * g(x)
I can do this in Haskell like so:
mult :: (Num b) => (a -> b) -> (a -> b) -> (a -> b)
mult f g = h
where h x = (f x) * (g x)
You might ask why I'd want to do this - I have a list of functions [f], and I want to reduce these with multiplication. Again, in Haskell:
reduce_mult list = foldl mult 1 list
Edit: How I'm using it in python, for completeness:
def prod_reduce(f_list):
def identity(x):
return 1
def f_mult(f, g):
def multiplied(x):
return f(x) * g(x)
return multiplied
prod = identity
for f in f_list:
prod = f_mult(prod, f)
return prod
Does anyone have any tips for the Python implementation?