9
edits
Tags: Mobile edit Mobile web edit |
|||
(22 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
__FORCETOC__ | __FORCETOC__ | ||
'''Mnemonics''' can assist with | '''Mnemonics''' can assist with [[learning resources|learning]] the meaning of APL [[glyph]]s and where on they keyboard they are found for [[typing glyphs|typing them]]. Both of these skills are essential for an effective APL programmer. This article provides such aide-mémoires. | ||
== Pairing glyphs with their meaning == | == Pairing glyphs with their meaning == | ||
Many glyphs have meaning [[Comparison_with_traditional_mathematics#Identical|identical to their mathematical counterparts]]. | Many glyphs have meaning [[Comparison_with_traditional_mathematics#Identical|identical to their mathematical counterparts]]. | ||
< | <syntaxhighlight lang=apl inline>⋄</syntaxhighlight> (Diamond) separates statements. That is, no functions or operators can break through <syntaxhighlight lang=apl inline>⋄</syntaxhighlight>, just as diamonds are virtually indestructible. | ||
< | <syntaxhighlight lang=apl inline>⌺</syntaxhighlight> looks like a <syntaxhighlight lang=apl inline>⋄</syntaxhighlight>-shaped [[Stencil]] laid on a piece of paper, <syntaxhighlight lang=apl inline>⎕</syntaxhighlight>. | ||
< | <syntaxhighlight lang=apl inline>!</syntaxhighlight> is [[Binomial]] in addition to [[Factorial]], as the two are closely related. | ||
[[File:I beam HEB 100.png|thumb|[[I-beam]] < | [[File:I beam HEB 100.png|thumb|[[I-beam]] <syntaxhighlight lang=apl inline>⌶</syntaxhighlight> does look like an [[wikipedia:I-beam|I-beam]]]] | ||
< | <syntaxhighlight lang=apl inline>⌶</syntaxhighlight> ([[I-beam]]) calls system services. APL was originally developed at [[IBM]], so system services were also IBM services. <syntaxhighlight lang=apl inline>⌶</syntaxhighlight> is an [[wikipedia:I-beam|I-beam]] and ''I-beam'' is pronounced almost identically to ''IBM''. | ||
< | <syntaxhighlight lang=apl inline>@</syntaxhighlight> applies a function or substitutes elements ''[[at]]'' specific locations. | ||
[[File:Bristol Type 223 top-view silhouette.png|thumb|The [[Grade]] glyphs < | [[File:Bristol Type 223 top-view silhouette.png|thumb|The [[Grade]] glyphs <syntaxhighlight lang=apl inline>⍋</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍒</syntaxhighlight> look like [[wikipedia:supersonic transport|supersonic transport]]s.]] | ||
< | <syntaxhighlight lang=apl inline>⍋</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍒</syntaxhighlight> give the indices ([[grade]]s) needed to sort ascending and descending respectively, and look like an ascending and descending supersonic transport, respectively. | ||
< | <syntaxhighlight lang=apl inline>⌽</syntaxhighlight>, <syntaxhighlight lang=apl inline>⊖</syntaxhighlight>, and <syntaxhighlight lang=apl inline>⍉</syntaxhighlight> [[reverse]] or [[transpose]] an array over a given [[axis]]. The <syntaxhighlight lang=apl inline>○</syntaxhighlight> part of the glyphs symbolise the array, while the line component (<syntaxhighlight lang=apl inline>|</syntaxhighlight>, <syntaxhighlight lang=apl inline>\</syntaxhighlight>, or <syntaxhighlight lang=apl inline>-</syntaxhighlight>) indicates the line across which the reversal/transposal is done. | ||
[[File:TreeLog.jpg|thumb|The [[Log]] glyph < | [[File:TreeLog.jpg|thumb|The [[Log]] glyph <syntaxhighlight lang=apl inline>⍟</syntaxhighlight> looks like a tree log.]] | ||
< | <syntaxhighlight lang=apl inline>⍟</syntaxhighlight> looks like the cross-section of a tree [[log]] | ||
< | <syntaxhighlight lang=apl inline>⍱</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍲</syntaxhighlight> ([[Nor]] and [[Nand]]) have the [[Not]] glyph <syntaxhighlight lang=apl inline>~</syntaxhighlight> on top of or overlaid on the [[Or]] glyph <syntaxhighlight lang=apl inline>∨</syntaxhighlight> and [[And]] glyph <syntaxhighlight lang=apl inline>∧</syntaxhighlight> respectively. | ||
< | <syntaxhighlight lang=apl inline>×</syntaxhighlight> can be seen as an <math>x</math> when monadic, indicating the unknown [[sign]] to be determined. | ||
< | <syntaxhighlight lang=apl inline>+</syntaxhighlight> negates the imaginary part (that is, it [[conjugate]]s) by analogy to monadic <syntaxhighlight lang=apl inline>-</syntaxhighlight> which negates both the real and the imaginary parts. | ||
< | <syntaxhighlight lang=apl inline>÷</syntaxhighlight> takes a default left argument of <syntaxhighlight lang=apl inline>1</syntaxhighlight> (thus computing the [[reciprocal]]), that being the [[identity element]] of [[division]]. | ||
< | <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> is [[matrix divide]] with a <syntaxhighlight lang=apl inline>⎕</syntaxhighlight> symbolising a matrix and an inscribed <syntaxhighlight lang=apl inline>÷</syntaxhighlight> for "divide". | ||
< | <syntaxhighlight lang=apl inline>?</syntaxhighlight> symbolises the unknown, and thus [[roll]]s dice and [[deal]]s cards randomly. | ||
< | <syntaxhighlight lang=apl inline>⍺</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍵</syntaxhighlight> are the leftmost and rightmost letters of the [[wikipedia:Greek alphabet|Greek alphabet]]. They therefore denote the left and right arguments of [[dfn]]s, respectively. | ||
< | <syntaxhighlight lang=apl inline>∊</syntaxhighlight> is the Greek letter [[Epsilon]] which corresponds to the letter ''E'' for [[Enlist]] and [[Element of]]. | ||
< | <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> is the Greek letter [[Rho]] which corresponds to the letter ''R'' for [[Reshape]]. | ||
< | <syntaxhighlight lang=apl inline>~</syntaxhighlight> is [[Not]] when monadic, but its dyadic form, [[Without]], can also be remembered as ''but not''. | ||
< | <syntaxhighlight lang=apl inline>⍨</syntaxhighlight> is a monadic operator that looks like a face. When its derived function is applied monadically, it can be called ''[[self]]ie'', in that it applies the operand function to the argument with the argument itself as left argument too. | ||
< | <syntaxhighlight lang=apl inline>↑</syntaxhighlight> and <syntaxhighlight lang=apl inline>↓</syntaxhighlight> ([[Mix]] and [[Split]]) increase and decrease rank (if possible) when used monadically. | ||
< | <syntaxhighlight lang=apl inline>↓</syntaxhighlight> [[drop]]s elements, and so it points down, the direction in which things are dropped. Take uses <syntaxhighlight lang=apl inline>↑</syntaxhighlight> by analogy. | ||
< | <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> is the Greek letter [[Iota]] which corresponds to the letter ''I'' for [[Index generator]] and [[Index of]]. | ||
< | <syntaxhighlight lang=apl inline>⍸</syntaxhighlight> is also the Greek letter [[Iota]] which corresponds to the letter ''I'' for [[Indices]] and [[Interval Index]]. | ||
< | <syntaxhighlight lang=apl inline>○</syntaxhighlight> is a circle for [[Circular]] functions and the ratio between the circumference and the diameter of a circle, [[Pi times|Pi]]. | ||
< | <syntaxhighlight lang=apl inline>⍥</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> ([[Over]] and [[Atop]]) both apply the left operand after the right operand. However, <syntaxhighlight lang=apl inline>⍥</syntaxhighlight> has a larger "circle of influence" in that it applies its right operand twice (once on each argument) while <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> only applies it once (between the arguments). | ||
< | <syntaxhighlight lang=apl inline>*</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍣</syntaxhighlight> repeatedly apply multiplication and a function, respectively. The star symbolises [[power (function)]]/[[power (operator)]]. | ||
< | <syntaxhighlight lang=apl inline>←</syntaxhighlight> [[assign]]s by putting the value on its right into the name on its left. | ||
< | <syntaxhighlight lang=apl inline>→</syntaxhighlight> points at the destination it is [[branch]]ing to. | ||
< | <syntaxhighlight lang=apl inline>⍬</syntaxhighlight> ([[Zilde]]) is a combination of <syntaxhighlight lang=apl inline>~</syntaxhighlight> for [[Without]] and <syntaxhighlight lang=apl inline>0</syntaxhighlight> indicating numbers. Indeed, it is the "vector without numbers", equivalent to <syntaxhighlight lang=apl inline>0~0</syntaxhighlight>. | ||
< | <syntaxhighlight lang=apl inline>⊣</syntaxhighlight> and <syntaxhighlight lang=apl inline>⊢</syntaxhighlight> point a finger towards the [[left]] and [[right]], which are exactly the argument they, respectively, return. | ||
[[File:Computer console.jpg|thumb|The [[Quad]] glyph < | [[File:Computer console.jpg|thumb|The [[Quad]] glyph <syntaxhighlight lang=apl inline>⎕</syntaxhighlight> looks like a console.]] | ||
< | <syntaxhighlight lang=apl inline>⎕</syntaxhighlight> is the prefix for all [[system name]]s, and also manages input from the console as well as output to the console. For that, it is a stylised console. <syntaxhighlight lang=apl inline>⍞</syntaxhighlight> looks like a <syntaxhighlight lang=apl inline>⎕</syntaxhighlight> with a quote <syntaxhighlight lang=apl inline>'</syntaxhighlight> indicating [[string]] input and message output. | ||
< | <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> and <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> are pictograms of a wall with a piece of [[ceiling]] and [[floor]], respectively. | ||
< | <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> and <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> can also be seen as indicators on a vertical number line, pointing at the [[maximum]] and [[minimum]], respectively. | ||
< | <syntaxhighlight lang=apl inline>∇</syntaxhighlight> is an upside-down Greek [[Delta]], which corresponds to the letter ''D'' for [[Defined function]] or (own) definition (for recursion). | ||
< | <syntaxhighlight lang=apl inline>⌸</syntaxhighlight> ([[Key]]) applies a function for each collection of all elements that are [[equal]] (<syntaxhighlight lang=apl inline>⌸</syntaxhighlight>). | ||
< | <syntaxhighlight lang=apl inline>≡</syntaxhighlight> can be see as a stack of layers. When used monadically, it finds the [[depth]] of an array. | ||
< | <syntaxhighlight lang=apl inline>≢</syntaxhighlight> looks like a [[tally]] mark. It being sideways can be justified by it counting the length of the leading axis; the vertical axis of a matrix. | ||
< | <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> [[enclose]]s its argument in a layer of nesting, and [[Disclose]] uses <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> by analogy. <syntaxhighlight lang=apl inline>⊆</syntaxhighlight> is exactly like <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> except that it only does a [[conditional enclose]], namely only if the argument is [[simple]]. | ||
< | <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> and <syntaxhighlight lang=apl inline>⊆</syntaxhighlight> enclose at specific locations, per a specification, so their dyadic forms are [[Partitioned enclose]] and [[Partition]], respectively. | ||
< | <syntaxhighlight lang=apl inline>∪</syntaxhighlight> is a styled letter ''U'' for [[Unique]] or [[Union]] if used dyadically. | ||
< | <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> looks like the [[base]] of a pillar, converting from that base. [[Antibase]] uses <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> by analogy, and looks a styled letter ''T'' for "To base". <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> and <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> are also respectively known as [[Encode]] and [[Decode]]. To remember which is which, <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> looks like a styled letter ''T'', so think "Ten-code". | ||
< | [[File:Lamp bulb.png|thumb|The [[Lamp]] glyph <syntaxhighlight lang=apl inline>⍝</syntaxhighlight> looks like a a lamp bulb filament.]] | ||
<syntaxhighlight lang=apl inline>⍝</syntaxhighlight> looks like a [[wikipedia:filament lamp|filament lamp]] and provides enlightenment by indicating [[comment]]s. | |||
< | <syntaxhighlight lang=apl inline>,</syntaxhighlight> [[concatenate]]s arrays, much like the common punctuation symbol concatenates phrases. <syntaxhighlight lang=apl inline>⍪</syntaxhighlight> has an added styled row, indicating that for matrices, it concatenates additional rows. | ||
< | <syntaxhighlight lang=apl inline>.</syntaxhighlight> is just a low dot, but performs the same operation (though generalised) as [[traditional mathematics]]' [[wikipedia:dot product|dot product]]. | ||
<syntaxhighlight lang=apl inline>/</syntaxhighlight> and <syntaxhighlight lang=apl inline>⌿</syntaxhighlight> are also called "by" which can be remembered as reduce by. | |||
== Pairing glyphs/functionality with their keyboard locations == | == Pairing glyphs/functionality with their keyboard locations == | ||
: | The following mnemonics are for [[Dyalog APL]]'s US English keyboard layout, but can easily be adapted to similar layouts. | ||
=== Number row keys === | |||
<syntaxhighlight lang=apl inline>⋄</syntaxhighlight> begins new APL expressions just like <kbd>`</kbd> button begins the main section of the keyboard. <syntaxhighlight lang=apl inline>⌺</syntaxhighlight> is a modified version of <syntaxhighlight lang=apl inline>⌺</syntaxhighlight>, so it is <kbd>Shift</kbd>+<syntaxhighlight lang=apl inline>⋄</syntaxhighlight>. | |||
<syntaxhighlight lang=apl inline>¨</syntaxhighlight> applies a function to each 1 of the argument elements, so it is on <kbd>APL</kbd>+<kbd>1</kbd>. <syntaxhighlight lang=apl inline>⌶</syntaxhighlight> looks like a [[wikipedia:Roman numerals|Roman numeral]] 1, so it also lives on the <kbd>1</kbd>, albeit in the shifted position. | |||
<syntaxhighlight lang=apl inline>¯</syntaxhighlight>, <syntaxhighlight lang=apl inline><</syntaxhighlight>, <syntaxhighlight lang=apl inline>≤</syntaxhighlight>, <syntaxhighlight lang=apl inline>=</syntaxhighlight>, <syntaxhighlight lang=apl inline>≥</syntaxhighlight>, <syntaxhighlight lang=apl inline>></syntaxhighlight>, and <syntaxhighlight lang=apl inline>≠</syntaxhighlight> form a block. The number line 1–9 (because 0 on the far right) is split into two [[equal]] halves by <kbd>5</kbd> so that gives <syntaxhighlight lang=apl inline>=</syntaxhighlight>. <kbd>4</kbd> and <kbd>6</kbd> are slightly less and more, respectively, so they give <syntaxhighlight lang=apl inline>≤</syntaxhighlight> and <syntaxhighlight lang=apl inline>≥</syntaxhighlight>. <kbd>3</kbd> and <kbd>7</kbd> are much less and more, respectively, so they give <syntaxhighlight lang=apl inline><</syntaxhighlight> and <syntaxhighlight lang=apl inline>></syntaxhighlight>. Finally, <kbd>2</kbd> is so much less that it is negative, giving the negative sign <syntaxhighlight lang=apl inline>¯</syntaxhighlight>, and <kbd>8</kbd> is so much greater that it is completely [[not equal|unequal]], <syntaxhighlight lang=apl inline>≠</syntaxhighlight>. | |||
<syntaxhighlight lang=apl inline>⍒</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍋</syntaxhighlight> are located on <kbd>#</kbd> (read "pound", <kbd>£</kbd> on British keyboards). <syntaxhighlight lang=apl inline>⍒</syntaxhighlight> pointing down is on the lower of the two numbers 3 and 4. This can be remembered as the pound going down due to [[wikipedia:Brexit|Brexit]]. | |||
<syntaxhighlight lang=apl inline>⌽</syntaxhighlight> mirrors an array over its vertical centre, so it is placed on the centre of the 1–9 number line. <syntaxhighlight lang=apl inline>⍉</syntaxhighlight> is slightly off centre, while <syntaxhighlight lang=apl inline>⊖</syntaxhighlight> has completely fallen over. | |||
<syntaxhighlight lang=apl inline>∨</syntaxhighlight> and <syntaxhighlight lang=apl inline>∧</syntaxhighlight> are on the largest (<kbd>9</kbd>) and smallest (<kbd>0</kbd>) digits, respectively, as <syntaxhighlight lang=apl inline>∨</syntaxhighlight> is inclusive (any argument being true gives true) while <syntaxhighlight lang=apl inline>∧</syntaxhighlight> is exclusive (any false gives false). Their negated versions <syntaxhighlight lang=apl inline>⍱</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍲</syntaxhighlight> are on the shifted positions. | |||
<syntaxhighlight lang=apl inline>×</syntaxhighlight> is adjacent to <syntaxhighlight lang=apl inline>∧</syntaxhighlight> for which it is equivalent on [[Boolean]] arguments. <syntaxhighlight lang=apl inline>!</syntaxhighlight> is above it, being <syntaxhighlight lang=apl inline>×/⍳</syntaxhighlight>. <syntaxhighlight lang=apl inline>÷</syntaxhighlight> is adjacent to its inverse, <syntaxhighlight lang=apl inline>×</syntaxhighlight>. And <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> is in the shifted position, being the [[matrix]] equivalent of <syntaxhighlight lang=apl inline>÷</syntaxhighlight>. | |||
=== Top row keys === | |||
<syntaxhighlight lang=apl inline>?</syntaxhighlight> is on <kbd>q</kbd> for '''''q'''uestion''. | |||
<syntaxhighlight lang=apl inline>⍵</syntaxhighlight>, <syntaxhighlight lang=apl inline>∊</syntaxhighlight>, and <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> look similar to <kbd>w</kbd>, <kbd>e</kbd>, and <kbd>i</kbd>. <syntaxhighlight lang=apl inline>⍷</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍸</syntaxhighlight> are the shifted variants of <syntaxhighlight lang=apl inline>∊</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍳</syntaxhighlight>. The Greek letters <syntaxhighlight lang=apl inline>∊</syntaxhighlight>, and <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> are also equivalent to the Latin ''e'', and ''i''. | |||
<syntaxhighlight lang=apl inline>⍴</syntaxhighlight> is the Greek equivalent of ''r''. | |||
<syntaxhighlight lang=apl inline>~</syntaxhighlight> is on <kbd>t</kbd> for its name '''''t'''ilde'', and its variant with diaeresis, <syntaxhighlight lang=apl inline>⍨</syntaxhighlight>, is on the shifted position. | |||
<syntaxhighlight lang=apl inline>↑</syntaxhighlight> is on <kbd>y</kbd> for '''''y'''ank'' (=take), and <syntaxhighlight lang=apl inline>↓</syntaxhighlight> is on the adjacent <kbd>u</kbd> for '''''drop''' down '''u'''nder''. | |||
<syntaxhighlight lang=apl inline>○</syntaxhighlight> is on <kbd>o</kbd> due to the similar looks, and <syntaxhighlight lang=apl inline>⍥</syntaxhighlight> is the shifted variant. <syntaxhighlight lang=apl inline>⍥</syntaxhighlight> is also on <kbd>O</kbd> for '''''O'''ver''. | |||
<syntaxhighlight lang=apl inline>*</syntaxhighlight> is on <kbd>p</kbd> for '''''p'''ower'', and <syntaxhighlight lang=apl inline>⍣</syntaxhighlight> is the shifted variant. | |||
<syntaxhighlight lang=apl inline>←</syntaxhighlight> and <syntaxhighlight lang=apl inline>→</syntaxhighlight> match the directionality of <kbd>[</kbd> and <kbd>]</kbd>. <syntaxhighlight lang=apl inline>⍞</syntaxhighlight> is usually immediately assigned to/from using <syntaxhighlight lang=apl inline>←</syntaxhighlight>, so they share key. <syntaxhighlight lang=apl inline>⍬</syntaxhighlight> is the empty vector and vectors are usually pictured as arrows pointing right, so it shares key with <syntaxhighlight lang=apl inline>→</syntaxhighlight>. | |||
<syntaxhighlight lang=apl inline>⊢</syntaxhighlight> is on the '''right'''most key, and its shifted variant <syntaxhighlight lang=apl inline>⊣</syntaxhighlight> points the other way. | |||
=== Home row keys === | |||
<syntaxhighlight lang=apl inline>⍺</syntaxhighlight> looks similar to <kbd>a</kbd>. The Greek letter <syntaxhighlight lang=apl inline>⍺</syntaxhighlight>is also equivalent to the Latin ''a''. Finally, <syntaxhighlight lang=apl inline>⍺</syntaxhighlight>, being the left argument, is (below and) to the left of the right argument <syntaxhighlight lang=apl inline>⍵</syntaxhighlight> on <kbd>w</kbd>. | |||
<syntaxhighlight lang=apl inline>⌈</syntaxhighlight> is on <kbd>s</kbd> for '''''s'''eiling'' (since ''c'' is pronounced like ''s'' here) and also finds the superlative argument. <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> is adjacent on <kbd>d</kbd> for ''rounding '''d'''own''. | |||
<syntaxhighlight lang=apl inline>_</syntaxhighlight> is on <kbd>f</kbd> for being a '''''f'''loormat''. | |||
<syntaxhighlight lang=apl inline>∇</syntaxhighlight> is on <kbd>g</kbd> for '''''g'''o!'', indicating the beginning of a function definition or going around again (recursion). Adjecent, we find its upturned variant, <syntaxhighlight lang=apl inline>∆</syntaxhighlight>, which is a '''''h'''ome'' tent, located on on <kbd>h</kbd>. | |||
<syntaxhighlight lang=apl inline>∘</syntaxhighlight> on <kbd>j</kbd> is called '''''j'''ot''. Its variant with diaeresis, <syntaxhighlight lang=apl inline>⍤</syntaxhighlight>, is on the shifted position. | |||
<syntaxhighlight lang=apl inline>'</syntaxhighlight> is on <kbd>k</kbd> for '''''k'''uote'' (since ''q'' is reserved for ''question'', as in "Q&A"). | |||
<syntaxhighlight lang=apl inline>⌸</syntaxhighlight> is also on <kbd>K</kbd> for '''''K'''ey''. | |||
<syntaxhighlight lang=apl inline>⎕</syntaxhighlight> is on <kbd>L</kbd> which looks like its lower left half. <syntaxhighlight lang=apl inline>⌷</syntaxhighlight> is its squished equivalent, on the shifted key. | |||
<syntaxhighlight lang=apl inline>⍎</syntaxhighlight> executes code, and is on <kbd>;</kbd> which is a ubiquitous symbol in code. Adjacent is <syntaxhighlight lang=apl inline>⍕</syntaxhighlight> which is its inverse and is found on <kbd>'</kbd> because it makes things into text, as indicated by the quote. | |||
<syntaxhighlight lang=apl inline>≡</syntaxhighlight> is on <kbd>:</kbd> — a stack of lines on a stack of dots. <syntaxhighlight lang=apl inline>≢</syntaxhighlight> is its negation and is found adjacent to it, on the <kbd>'</kbd> key, <syntaxhighlight lang=apl inline>≢</syntaxhighlight> being a <syntaxhighlight lang=apl inline>≡</syntaxhighlight> with a <code>'</code> drawn on top. | |||
=== Bottom row keys === | |||
<syntaxhighlight lang=apl inline>⊂</syntaxhighlight> is on <kbd>z</kbd> because it '''''z'''ips'' up (encloses) a value into a scalar. Its shifted variant <syntaxhighlight lang=apl inline>⊆</syntaxhighlight> only does so conditionally. Its inverse and mirror-image, <syntaxhighlight lang=apl inline>⊃</syntaxhighlight>, is located adjacent, on <kbd>x</kbd> because it ''e'''x'''tracts'' (discloses) the content of an enclosed scalar. | |||
<syntaxhighlight lang=apl inline>∩</syntaxhighlight> is on <kbd>c</kbd> for '''''c'''ap'', and its upturned variant, <syntaxhighlight lang=apl inline>∪</syntaxhighlight>, is adjacent on <kbd>v</kbd> to which it is visually similar. | |||
<syntaxhighlight lang=apl inline>⊥</syntaxhighlight> is on <kbd>b</kbd> because it evaluates digits in a given '''''b'''ase''. Its upturned variant <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> is adjacent on <kbd>n</kbd> because it (''e'')'''''n'''code''s a normal '''''n'''umber'' to a custom '''''n'''umber'' system. | |||
<syntaxhighlight lang=apl inline>|</syntaxhighlight> is on <kbd>m</kbd> for '''''modulo''/'''''m'''agnitude'' and '''''modulus''. | |||
<syntaxhighlight lang=apl inline>⍝</syntaxhighlight> is on <kbd>,</kbd> due to the similarity of the words ''comma'' and ''comment''. Shifted <kbd>,</kbd> gives the barred version, <syntaxhighlight lang=apl inline>⍪</syntaxhighlight>. | |||
<syntaxhighlight lang=apl inline>⍀</syntaxhighlight> is adjacent to its mirrored counter-part <syntaxhighlight lang=apl inline>⌿</syntaxhighlight> which in turn is a barred version of its key, <kbd>/</kbd>. | |||
<syntaxhighlight lang=apl inline>⍠</syntaxhighlight> varies the meaning of its operand, so it is in the corner on <kbd>?</kbd>, adjacent to all the shifting keys. | |||
=== Summary === | |||
All the above mnemonics are annotated on the below image of a US English keyboard layout: | |||
{{#css:.image img{width:100%;height:auto}}[[File:Keyboard Mnemonics.png]] | {{#css:.image img{width:100%;height:auto}}[[File:Keyboard Mnemonics.png]] | ||
< | == Pairing monadic and dyadic meanings == | ||
< | Meaning pairings fall into three groups as follows. | ||
=== Monadic form is like dyadic form with a default left argument === | |||
{| class=wikitable | |||
! Glyph | |||
! Default left argument | |||
|- | |||
| <syntaxhighlight lang=apl inline>+</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>0J¯2×11○x</syntaxhighlight> i.e. <math>-2\!\cdot\!\Im(x)</math> | |||
|- | |||
| <syntaxhighlight lang=apl inline>-</syntaxhighlight> | |||
| 0 | |||
|- | |||
| <syntaxhighlight lang=apl inline>×</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>÷(|x)+x=0</syntaxhighlight> i.e. <math>\frac1{|x|+[x=0]}</math> | |||
|- | |||
| <syntaxhighlight lang=apl inline>÷</syntaxhighlight> | |||
| 1 | |||
|- | |||
| <syntaxhighlight lang=apl inline>*</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>*1</syntaxhighlight> i.e. <math>e</math> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍟</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>*1</syntaxhighlight> i.e. <math>e</math> | |||
|- | |||
| <syntaxhighlight lang=apl inline>,</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>⍬</syntaxhighlight> (for scalars and vectors only) | |||
|- | |||
| <syntaxhighlight lang=apl inline>?</syntaxhighlight> | |||
| 1 (almost; monadic form gives a scalar, dyadic form gives a vector) | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍒</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>⎕UCS 0,⍳111411</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍋</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>⎕UCS 0,⍳111411</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍉</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>⌽⍳≢⍴x</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍎</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>⎕THIS</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>∘.=⍨⍳≢x</syntaxhighlight> i.e. <math>I_n</math> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>,1</syntaxhighlight> (almost; monadic form gives a scalar, dyadic form gives a vector) | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>⊂(≢⍴x)⍴1</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>∪</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>∪x</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⌷</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>⊂⍳≢⌷x</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊣</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>x</syntaxhighlight> | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊢</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>x</syntaxhighlight> | |||
|} | |||
=== Both forms are good fit for the glyph === | |||
{| class=wikitable | |||
! Glyph | |||
! Explanation | |||
|- | |||
| <syntaxhighlight lang=apl inline>≡</syntaxhighlight> | |||
| indicates (3) layers of depth for the monadic form | |||
|- | |||
| <syntaxhighlight lang=apl inline>≢</syntaxhighlight> | |||
| indicates a counting rod marking for the monadic form | |||
|- | |||
| <syntaxhighlight lang=apl inline>↑</syntaxhighlight> | |||
| take elements and increase rank | |||
|- | |||
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight> | |||
| drop elements and decrease rank | |||
|- | |||
| <syntaxhighlight lang=apl inline>∊</syntaxhighlight> | |||
| "'''e'''lement of" and "'''e'''nlist" | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊆</syntaxhighlight> | |||
| "enclose at positions where condition is met" and "enclose on condition of being simple" | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍸</syntaxhighlight> | |||
| "'''i'''ndices where elements fit into intervals" and "'''i'''ndices where true" | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍪</syntaxhighlight> | |||
| <syntaxhighlight lang=apl inline>,[1]x</syntaxhighlight> (for non-scalars) and <syntaxhighlight lang=apl inline>,⍤¯1</syntaxhighlight> (for higher-rank arrays) | |||
|} | |||
=== The two forms are conceptually related === | |||
{| class=wikitable | |||
! Glyph | |||
! Relationship | |||
|- | |||
| <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> | |||
| next higher integer or highest argument | |||
|- | |||
| <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> | |||
| next lower integer or lowest argument | |||
|- | |||
| <syntaxhighlight lang=apl inline>|</syntaxhighlight> | |||
| both forms can be called [[wikipedia:modulo|modulo]] and use the symbol: <math>|x|</math> and <math>a|b</math> | |||
|- | |||
| <syntaxhighlight lang=apl inline>!</syntaxhighlight> | |||
| factorial is prominent in the formula for binomial | |||
|- | |||
| <syntaxhighlight lang=apl inline>○</syntaxhighlight> | |||
| both the trigonometric functions and <math>\pi</math> relate to the (unit) circle | |||
|- | |||
| <syntaxhighlight lang=apl inline>~</syntaxhighlight> | |||
| "not" and "but not" | |||
|- | |||
| <syntaxhighlight lang=apl inline>≠</syntaxhighlight> | |||
| monadic means "not equal to any preceding item" | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> | |||
| shape and reshape | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> | |||
| indices of and index of | |||
|- | |||
| <syntaxhighlight lang=apl inline>⌽</syntaxhighlight> | |||
| rotate and mirror along last axis | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊖</syntaxhighlight> | |||
| rotate and mirror along first axis | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍕</syntaxhighlight> | |||
| format and format with specification | |||
|} | |||
{{APL development}}{{APL glyphs}} | {{APL development}}{{APL glyphs}} | ||
[[Category:APL character set]] | [[Category:APL character set]] |
edits