Not

 ~

Not (~) is a monadic scalar function that returns the logical negation of a Boolean argument—that is, 0 if the argument is 1 and 1 if it is 0. In some languages, such as J, it is extended so that Not x is equivalent to 1-x while in others, such as K, it is extended so that Not x is equivalent to 0=x.

Examples

      ~ 0 1 1 0 1
1 0 0 1 0


Attempting to negate a non-Boolean argument usually results in a DOMAIN ERROR. In some languages it may instead subtract the argument from one.

      ~ 0 0.5 1
DOMAIN ERROR
~0 0.5 1
∧


Properties

Not is the only Boolean function of a single argument which depends on that argument (it is not constant) and is not trivial (the same as Identity). Not is its own Inverse.

History

A Programming Language negates arrays using an overbar symbol like ${\displaystyle {\overline {p}}}$, matching a convention sometimes used in mathematics. In APL\360 the current symbol ~ was chosen, also due to its use in mathematics. Mathematical usage has arguably diverged from APL in this respect, as the negation of a variable ${\displaystyle p}$ is now more often written ${\displaystyle \neg p}$ when a prefix operator is desired.

The arithmetic extension ~x ${\displaystyle \Leftrightarrow }$ 1-x was introduced to the array langauge family by J. For arguments in the interval ${\displaystyle [0,1]}$ this extension may be seen as a probabilistic interpretation of negation.

Extensions

Extension Languages
None APL\360, APL2, APLX, SHARP APL, Dyalog APL, GNU APL, ngn/apl, dzaima/APL
1-⍵ J, BQN, Extended Dyalog APL
0=⍵ K