【发布时间】:2017-02-10 14:38:31
【问题描述】:
我想做一些函数组合。我已经知道了:
如果f3(x) 应与f1(f2(x)) 相同
然后f3 = _.flowRight(f1,f2);
如果f3(x,y) 应与f1(x, f2(y)) 相同
那么……?
(用例是node.js/express中间件函数的组合。)
【问题讨论】:
-
我昨天写了一个关于 lodash 流程的答案。我认为您会发现它非常有用,因为某些功能不是要组合的:stackoverflow.com/a/42139851/633183
-
我在一小时前写了另一个关于在现有代码库中组合的答案。我想你会发现它与这个主题相关:stackoverflow.com/a/42164779/633183
-
你的“问题”是你试图组合各种 arity 的函数;一元函数与二元函数。当专门使用一元函数时,函数组合效果最好。简短的回答是
const f3 = (x,y) => f1(x, f2(y))——让简单变得简单。 -
@naomik 感谢您的回答,并且您对元数(一元或二元,具有一个、两个甚至更多参数的函数)是正确的。就我而言,我可以争辩说,我所有的中间件函数都是二进制的,所以有两个参数:过滤器值和处理程序。所以我很确定,它对我的用例来说是“通用的”。
标签: javascript functional-programming lodash composition