为什么在 ramda.js 中使用“complement”作为函数的名称

rob*_*uck 6 functional-programming ramda.js

我理解使用 ramda 的补码函数来反转谓词的返回。我无法理解的是为什么使用“补码”作为名称。

const invertPredicate = R.complement(R.identity)
invertPredicate(false) //true
Run Code Online (Sandbox Code Playgroud)

有人可以对此有所了解吗?

Sco*_*her 7

“在集合论中,集合 A 的补集指的是不在 A 中的元素”

https://en.m.wikipedia.org/wiki/Complement_(set_theory)

SoR.complement将为所有不满足提供的谓词的值生成一个谓词。


Sco*_*yet 5

除了 Scott Christopher 的回答之外,Ramda(免责声明:Scott Christopher 和我都是 Ramda 的作者)已经对这些基本功能进行了多次迭代。有一次,我们有and, or, 和not值以及andFn, orFn, 和notFn函数。我们去掉了值,并使用更好的名称来组合谓词函数。

但那些价值版本很受欢迎。我们把它们带回来了。我们还给了他们更简单的名字,因为这就是人们阅读中缀运算符||&&前缀的方式!。将其他命名为bothand很容易either,但我们在找到之前有点挣扎complement。一旦我们找到了那个,我们很高兴再次重命名。该名称的实际解释与 Scott Christopher 所说的完全相同。我仍然有些遗憾,但这对图书馆来说是正确的决定。