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 <source lang=apl inline>x</syntaxhighlight> is equivalent to <source lang=apl inline>1-x</syntaxhighlight> while in others, such as K, it is extended so that Not <source lang=apl inline>x</syntaxhighlight> is equivalent to <source lang=apl inline>0=x</syntaxhighlight>.
Examples
<source lang=apl>
~ 0 1 1 0 1
1 0 0 1 0 </syntaxhighlight> Attempting to negate a non-Boolean argument usually results in a DOMAIN ERROR. In some languages it may instead subtract the argument from one. <source lang=apl>
~ 0 0.5 1
DOMAIN ERROR
~0 0.5 1 ∧
</syntaxhighlight>
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 , matching a convention sometimes used in mathematics. In APL\360 the current symbol <source lang=apl inline>~</syntaxhighlight> 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 is now more often written when a prefix operator is desired.
The arithmetic extension <source lang=apl inline>~x</syntaxhighlight> <source lang=apl inline>1-x</syntaxhighlight> was introduced to the array langauge family by J. For arguments in the interval 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 |
<source lang=apl inline>1-⍵</syntaxhighlight> | J, BQN, Extended Dyalog APL |
<source lang=apl inline>0=⍵</syntaxhighlight> | K |
See also
External links
Lessons
Documentation
- Dyalog
- APLX
- J Dictionary, NuVoc
- BQN