我有三个函数x y z和一个称为functionComposer的函数。
我希望functionComposer具有x y z函数作为参数,并返回一个将y和z的结果用作x的参数并应用x的函数。
用数学符号表示:x(y(a),z(b))
林不要求这个:functionComposer x y z = x.y.z
例如:
double x = x + x
summer x y = x + y
functionComposer summer double double = summer (double) (double)
如果x = 2,则结果应为8(2 + 2)+(2 + 2)
最佳答案
我以某种方式感觉好像您仍然想要一系列令人困惑的点,所以:
functionComposer :: (c -> d -> e) -> (a -> c) -> (b -> d) -> a -> b -> e
functionComposer x y z = (. z) . (x . y)
这是“自然地”来自
functionComposer x y z a = (x . y) a . z
但是为什么要停在那里?
functionComposer x y = (. (x . y)) . flip (.)
不再:
functionComposer x = (. flip (.)) . flip (.) . (x .)
更多!
functionComposer = (((. flip (.)) . flip (.)) .) . (.)
关于haskell - Haskell-怪异地构成三个功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23620257/