为什么 "complement" 用作 ramda.js 中函数的名称
Why was "complement" used as a name for the function in ramda.js
我了解 ramda 的 complement 函数的用法,它反转谓词的 return。我无法理解的是为什么 "complement" 被用作名称。
const invertPredicate = R.complement(R.identity)
invertPredicate(false) //true
有人可以对此提供一些见解吗?
“在集合论中,集合A的补集指的是不在A中的元素”
https://en.m.wikipedia.org/wiki/Complement_(set_theory)
因此 R.complement
将为所有不满足提供的谓词的值生成谓词。
添加到 Scott Christopher 的回答中,Ramda(免责声明:Scott Christopher 和我都是 Ramda 作者)已经对这些基本功能进行了多次迭代。在某一时刻,我们有 and
、or
和 not
用于值,以及 andFn
、orFn
和 notFn
用于函数。我们摆脱了值的名称,并使用更好的名称来组合谓词函数。
但那些超值版本很受欢迎。我们把它们带回来了。我们还给了他们更简单的名字,因为这是人们阅读中缀运算符 ||
和 &&
以及前缀 !
的方式。将其他名称命名为 both
和 either
很容易,但我们在找到 complement
之前遇到了一些困难。一旦我们找到那个,我们很高兴再次重命名。这个名字的实际解释正如斯科特克里斯托弗所说的那样。我仍然有些遗憾,但这是图书馆的正确决定。
我了解 ramda 的 complement 函数的用法,它反转谓词的 return。我无法理解的是为什么 "complement" 被用作名称。
const invertPredicate = R.complement(R.identity)
invertPredicate(false) //true
有人可以对此提供一些见解吗?
“在集合论中,集合A的补集指的是不在A中的元素”
https://en.m.wikipedia.org/wiki/Complement_(set_theory)
因此 R.complement
将为所有不满足提供的谓词的值生成谓词。
添加到 Scott Christopher 的回答中,Ramda(免责声明:Scott Christopher 和我都是 Ramda 作者)已经对这些基本功能进行了多次迭代。在某一时刻,我们有 and
、or
和 not
用于值,以及 andFn
、orFn
和 notFn
用于函数。我们摆脱了值的名称,并使用更好的名称来组合谓词函数。
但那些超值版本很受欢迎。我们把它们带回来了。我们还给了他们更简单的名字,因为这是人们阅读中缀运算符 ||
和 &&
以及前缀 !
的方式。将其他名称命名为 both
和 either
很容易,但我们在找到 complement
之前遇到了一些困难。一旦我们找到那个,我们很高兴再次重命名。这个名字的实际解释正如斯科特克里斯托弗所说的那样。我仍然有些遗憾,但这是图书馆的正确决定。