Adding to the answer from Scott Christopher, Ramda (disclaimer: both Scott Christopher and I are Ramda authors) has gone through several iterations of these basic functions. At one point we had and
, or
, and not
for values as well as andFn
, orFn
, and notFn
for functions. We got rid of the value ones and used the nicer names for combining predicate functions.
But those value versions were popular. We brought them back. And we gave them back the simpler names, as that is how people read the infix operators ||
and &&
and the prefix !
. It was easy to name the others as both
and either
, but we struggled a bit before finding complement
. Once we find that one, we were happy enough to rename again. The actual explanation of the name is exactly as Scott Christopher says. I still have some regrets, but this was the correct decision for the library.