我嘗試過在Python的功能來定義的乘法,僞代碼是這樣的:在Python中定義函數的乘法?
這將返回以x的函數,因爲F(X),G(X)
multiply_two_functions((f(x), g(x)) = f(x) * g(x)
我可以爲此在Haskell像這樣:
mult :: (Num b) => (a -> b) -> (a -> b) -> (a -> b)
mult f g = h
where h x = (f x) * (g x)
你可能會問,爲什麼我會想這樣做 - 我的功能[F]的清單,我想減少這些用乘法。同樣,在Haskell:
reduce_mult list = foldl mult 1 list
編輯:我如何使用它的蟒蛇,出於完整性:
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
沒有人有Python實現任何提示?
如果您使用可調用的類(即實現['__call__'](https://docs.python.org/2/reference/data model.html#object .__ call__))而不是常規函數,您可以定義所需的任何乘法行爲(請參閱https://docs.python.org/2/reference/datamodel.html#emulating-numeric-types)。或者你問如何編寫'multiply_two_functions'函數?你能舉一個例子說明你如何在Python中使用它,對於我們這些不熟悉[tag:haskell]的人? – jonrsharpe
@jonrsharpe我用我如何使用它的例子編輯了OP。 – Leon