High minus
¯

High minus (¯
) or Negative is the character used in numeric literals to indicate that a number is negated. APL syntax dictates that it be distinct from the function Negate in order to allow all numbers to be expressed as numeric literals. This ability is particularly useful in stranding or vector notation, since a number obtained from function application is harder to use in a strand—depending on the type of stranding available, it must either be parenthesized or cannot be stranded at all. It also allows negative numbers to be used as left arguments to functions, or as operands.
A high minus is also used in the TIBasic programming language to differentiate negation from subtraction.^{[1]}
J uses a "low minus" (an underscore; _
) as negative sign, while K requires at least one space between a dash (
) and a numeric literal to access the subtraction function as opposed to having the dash be interpreted as a negative sign.
Examples
Using a high minus in a vector of numbers allows one number to be negated. With an ordinary minus, the expression is instead parsed as subtraction, where 2 3
is subtracted from 1
. In both cases, APL expresses negative results using the high minus.
1 ¯2 3
1 ¯2 3
1 2 3
¯1 ¯2
Because the high minus is part of a number and not a separate operation, it can be used as the left argument to a function without parenthesizing it. An ordinary minus will instead apply the function to the positive number and Negate the final result.
¯2 ↓ 3 4 5
3
2 ↓ 3 4 5
¯5
In langauges which allow array operands, a negative number can be passed directly as an operand without parenthesizing it. Using an ordinary minus in the right operand will cause the minus alone to be used as the operand, while the number is not. In the expression below, it is passed as the left argument of Right (⊢
), causing it to be discarded.
+∘¯1 ⊢3
2
+∘1 ⊢3
¯3
External links
Lessons
Documentation
 Dyalog
 J Dictionary, J NuVoc (as
_
)
References
 ↑ TIBasic Developer: The ‾ Command
APL builtins [edit]  

Primitive functions  
Scalar  
Monadic  Conjugate ∙ Negate ∙ Signum ∙ Not ∙ Roll ∙ Type  
Dyadic  Add ∙ Subtract ∙ Equal to (Xnor) ∙ Not Equal to (Xor) ∙ Minimum ∙ Maximum ∙ Comparison functions  
NonScalar  
Structural  Shape ∙ Reshape ∙ Tally ∙ Depth ∙ Ravel ∙ Reverse ∙ Raze ∙ Mix ∙ Cut (K) ∙ Pair ∙ Replicate ∙ Partitioned Enclose  
Selection  Take ∙ Drop ∙ Unique ∙ Identity ∙ Select  
Selector  Interval Index ∙ Indices  
Computational  Match ∙ Not Match ∙ Nub Sieve ∙ Format ∙ Execute  
Primitive operators  Each ∙ Reverse Compose ∙ Replicate  
Quad names  
Arrays  Index origin ∙ Migration level  
Functions  
Operators  
Other  Zilde ∙ High minus ∙ Function axis 