The composition input system is designed to be easy to pick up, while only remembering three simple rules:
-
If an ASCII character is similar to an APL glyph, then double the APL glyph, e.g.
xx
gives×
andTT
gives⊤
andcc
gives⊂
and""
gives¨
andww
gives⍵
. -
Otherwise, if two ASCII characters combined would approximate an APL glyph, then use those two (generally in any order, but from left to right if the combination is by juxtaposition rather than overlaying), e.g.
:-
gives÷
ando"
gives⍤
and\O
gives⍉
ande_
gives⍷
andZ-
gives≢
and-|
gives⊣
and|-
gives⊢
. -
Otherwise (if it isn't possible to approximate an entire APL glyphusing only two ASCII characters) use two ASCII characters that combine to the left or right half (or slightly more than half) of the APL glyph, e.g.
[:
gives⍠
and-]
gives⌹
and[<
gives⌺
and[>
gives⍄
.
-
Not every glyph has a meaning in any or every APL implementation or dialect. Some glyphs have different meanings in different implementations and dialects. The following are listed with their default Dyalog APL meanings and some extensions.
-
Not every APL glyph is included in every keyboard layout. Please open an issue to request a glyph's inclusion in an existing layout.
-
Some glyphs resemble Greek or Latin characters, but Unicode categorises them as special mathematical or APL variants. Unicode also has some instances of "up" and "down" swapped when it comes to tack glyphs.
-
Most compositions are commutative (ASCII characters can be entered in either order), but where the composition is visually horizontal (one character is placed next to the other, rather than as an overstrike or one above the other) they must be entered in the order given (such as is the case for left tack and right tack where
-|
gives⊣
and|-
gives⊢
). -
Some glyphs have multiple recognised compositions.
-
While the compositions below are (near) universal across keyboards, the precise method of combining characters into glyphs is not: Some layouts require you to hold Alt and the first character together, followed by the second character (for example, Alt+< then - gives
←
) while others require you to type the two charcharcters as normal, followed by hitting Tab to combine them.
Glyph | Names | Characters |
---|---|---|
← |
Assignment (leftwards arrow) | <- |
→ |
Go to / branch (rightwards arrow) | -> |
↑ |
Mix / Take (upwards arrow) | ^| |
↓ |
Split / Drop (downwards arrow) | v| |
× |
Times (multiplication sign) | xx /\ |
÷ |
Divide (division sign) | :- |
○ |
White circle (Pi times / Circular / Trigonometric functions) | OO |
∘ |
Beside / Bind / Outer product (jot / ring operator) | oo |
⍟ |
Logarithm (circle star) | *O |
⌾ |
(circle jot) | oO |
⌽ |
Reverse / Rotate (circle stile) | O| |
⍉ |
Transpose / Reorder axes (circle backslash) | O\ |
⊖ |
Reverse-first / Rotate-first (circle bar / circled minus) | O- |
⍥ |
Depth / Over operator (circle diaeresis) | O: O" |
⍤ |
Atop / Rank operator (jot diaeresis) | o: o" |
¨ |
Each operator (diaeresis) | :: "" |
⍨ |
Constant / Swap / Selfie operator (tilde diaeresis) | ~: ~" |
⍣ |
Power operator (star diaeresis) | *: *" |
⌹ |
Matrix divide / inverse (Quad divide / domino) | -[ -] |
⌈ |
Round up / Maximum (left ceiling / up stile) | FF 77 |
⌊ |
Round down / Minimum (left floor / down stile) | ll LL |
⊥ |
Decode / base (up tack) | _| |
⊤ |
Encode (down tack) | TT |
⊣ |
Same / Left (left tack) | -| |
⊢ |
Same / Right (right tack) | |- |
≠ |
Not equal to | =/ L- |
≤ |
Less than or equal to | <= <_ |
≥ |
Greater than or equal to | >= >_ |
≡ |
Depth / Match (identical to) | == =_ |
≢ |
Tally / Not match (not identical to) | 7= Z- |
∨ |
Greatest common divisor / Logical OR | vv |
∧ |
Lowest common multiple / Logical AND | ^^ |
⍲ |
Logical NAND (up caret tilde) | ~^ |
⍱ |
Logical NOR (down caret tilde) | ~v |
⊂ |
Enclose / Partitioned enclose (left shoe / subset of) | (( cc |
⊆ |
Nest / Partition (left shoe underbar / subset of or equal to) | (_ c_ |
⊃ |
First / Pick (right shoe / superset of) | )) |
⊇ |
(right shoe underbar / superset of or equal to) | )_ |
∪ |
Unique / Union | uu UU |
∩ |
Intersection | nn |
⌷ |
Index (squad / squish quad) | [| ]| |
⍋ |
Grade up (delta stile) | A| |
⍒ |
Grade down (del stile) | V| |
⍳ |
Index generator / Index-of (iota) | ii |
⍸ |
Where / Interval-index (iota underbar) | i_ |
∊ |
Enlist / Membership (epsilon / small element of) | ee |
⍷ |
Find (epsilon underbar) | e_ |
⍺ |
Left dfn argument / dop operand (alpha) | aa |
⍶ |
Alpha underbar | a_ |
⍵ |
Right dfn argument / dop operand (omega) | ww |
⍹ |
Omega underbar | w_ |
⍴ |
Shape / Reshape (rho) | rr pp |
⌿ |
Replicate-first / Compress-first / Reduce-first (slash bar) | /- |
⍀ |
Expand-first / Scan-first (backslash bar) | \- |
⍪ |
Table / Catenate-first (comma bar) | ,- |
¯ |
Negative literal / (high minus / macron) | -- |
⎕ |
System (quad) | [] |
⍠ |
Variant operator (quad colon) | [: :] |
⌸ |
Key operator (quad equal) | [= =] |
⌺ |
Stencil / Moving window operator (quad diamond) | [< >] |
⍃ |
(quad less-than) | <] |
⍄ |
(quad greater-than) | [> |
⌶ |
Experimental features / I-Beam | II T_ |
⍎ |
Execute (hydrant / down tack jot) | o_ |
⍕ |
Format (up tack jot) | oT o- |
⋄ |
Statement separator (diamond operator) | <> ^v |
⍝ |
Comment (lamp / up shoe jot) | on |
∇ |
Dfn recurse / Tradfn define (nabla) | VV v- |
⍢ |
Under operator (del diaeresis) | V: V" |
⍫ |
(del tilde) | V~ |
⍙ |
(delta underbar) | A_ |
⍬ |
Empty numeric vector (zilde) | 0~ |
∥ |
Parallel operator (parallel to) | || |
¤ |
Isolate (currency sign) | ox |