Ramda函数,用于在应用于参数时评估函数的相等性

时间:2017-05-23 16:03:58

标签: javascript functional-programming ramda.js

我正在寻找一个函数,该函数接受两个函数并返回一个函数,当应用于参数时,如果这些函数在应用于给定参数时返回相同的值,则返回true或false。

你可以这样做:

R.converge(R.equals, [func1, func2])

一个愚蠢的例子:

const eq = R.converge(R.equals, [R.T, R.identity]);

eq('foo') // false
eq(true) // true

我正在寻找一种更优雅的方法来实现这一目标。

1 个答案:

答案 0 :(得分:3)

这是一种可能性:

const eq = lift(R.equals);
eq(R.T, R.identity)('foo'); //=> false
eq(R.T, R.identity)(true); //=> true

您可能会或可能不会发现这更优雅。显然,您可以命名eq(T, identity)以获得可重用的功能。

  

我有点惊讶Ramda没有提供这个开箱即用

我想知道为什么。我从来没有要求过这样的事情。它从未在Ramda存储库中被提升为issue。你的用例是什么?

  

Stackoverflow真的很糟糕。只是试图从人们那里得到一些帮助,我得到了投票。那就是为什么我几乎再也不会回到这里了。

目前,有一个投票和一个投票。两个当前"关闭"原因与它过于舆论有关。对于一个要求更优雅的问题来说,这当然是合理的。解。我建议你不要把看票当作对你的反思,而只是看你的问题/答案。虽然我确定偶尔会出现混乱,但大多数人都在投票,以帮助改善网站。他们认为你的问题需要运作。倾听和学习。你不必同意;你不必改变你的问题,但你至少应该考虑他们是否正确。