Glyph: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
m (Text replacement - "wikipedia:Overstrike" to "overstrike")
Tags: Mobile edit Mobile web edit
No edit summary
Line 3: Line 3:
Most of APL's glyphs cannot be represented in [[wikipedia:ASCII|ASCII]], now considered a "standard" or "basic" character set, but all of them are included in [[Unicode]], as one goal of Unicode was to unify existing character sets. In fact, [[Ken Iverson]] first began using [[Iverson notation|his notation]] before work on ASCII began, and [[APL\360]] was implemented before the modern ASCII standard was published in 1967. Prior to the widespread adoption of Unicode, many [[wikipedia:Digital encoding of APL symbols|special purpose code pages]] were used to represent APL symbols. APLs developed more recently, such as [[NARS2000]] and [[GNU APL]], use Unicode characters to represent glyphs, sometimes supporting several different options for a given glyph. Unicode also offers the possibility of introducing glyphs that could not have been produced on older APL systems: for example, both [[NARS2000]] and [[dzaima/APL]] use <source lang=apl inline>√</source> for the [[Square Root]] and [[Root]] functions.
Most of APL's glyphs cannot be represented in [[wikipedia:ASCII|ASCII]], now considered a "standard" or "basic" character set, but all of them are included in [[Unicode]], as one goal of Unicode was to unify existing character sets. In fact, [[Ken Iverson]] first began using [[Iverson notation|his notation]] before work on ASCII began, and [[APL\360]] was implemented before the modern ASCII standard was published in 1967. Prior to the widespread adoption of Unicode, many [[wikipedia:Digital encoding of APL symbols|special purpose code pages]] were used to represent APL symbols. APLs developed more recently, such as [[NARS2000]] and [[GNU APL]], use Unicode characters to represent glyphs, sometimes supporting several different options for a given glyph. Unicode also offers the possibility of introducing glyphs that could not have been produced on older APL systems: for example, both [[NARS2000]] and [[dzaima/APL]] use <source lang=apl inline>√</source> for the [[Square Root]] and [[Root]] functions.


Because of difficulties associated with non-ASCII characters (while display problems have been almost eliminated by Unicode, entering the characters may still be a barrier), several array-family languages such as [[J]], [[K]], and [[ELI]] have chosen to encode the language using only ASCII, either by reducing and compacting functionality to use one character per glyph or by using multiple characters in some cases (in J, these are called "bigraphs" and "trigraphs"). Historically there have also been various encodings of APL in smaller character sets, typically as an alternate way of writing code for an APL with traditional glyphs.
While [[Iverson notation]] was originally handwritten, the choice of glyphs to include in the first APL implementations was influenced by technical constraints of the typewriters used at the time. Notably, many glyphs were produced by overlaying two simpler glyphs, a technique known as [[overstrike|overstriking]].
 
== Alternatives ==
 
Display problems have been mostly eliminated by the broad uptake of Unicode. However some difficulties with [[typing glyphs]] remain. Several APL-family languages such as [[J]], [[K]], and [[ELI]] have chosen to stick with ASCII, either by reducing and compacting functionality to use one character per glyph or by using multiple characters. Historically there have also been various encodings of APL in smaller character sets, typically as an alternate way of writing code for an APL with traditional glyphs.


While [[Iverson notation]] was originally handwritten, the choice of glyphs to include in the first APL implementations was influenced by technical constraints of the typewriters used at the time. Notably, many glyphs were produced by overlaying two simpler glyphs, a technique known as [[overstrike|overstriking]].
== Bi-glyphs ==
J and K use both ASCII symbols on their own, and followed by one or more periods and/or colons. J terminology calls these ''bigraphs'' and ''trigraphs''. For example, J uses <source lang=j inline>^</source> for [[Power]], <source lang=j inline>^.</source> for [[Logarithm]], and <source lang=j inline>^:</source> for the [[Power operator]], while K uses <source lang=k inline>':</source> for the equivalent of [[Windowed_Reduce#Notable_uses|pair-wise reduction]] (<source lang=apl inline>¯2f/</source>) and <source lang=k inline>0:</source> for line-by-line file read/write.


{{APL features}}
{{APL features}}
{{APL glyphs}}
{{APL glyphs}}
[[Category:Glyphs| ]]
[[Category:Glyphs| ]]

Revision as of 15:55, 7 May 2021

Glyphs are the individual characters and symbols used in APL, primarily to represent primitive functions and operators. A glyph is distinct from the functionality it represents, and usually has a different name: for example, the dyadic function Take is represented with the glyph Up Arrow.

Most of APL's glyphs cannot be represented in ASCII, now considered a "standard" or "basic" character set, but all of them are included in Unicode, as one goal of Unicode was to unify existing character sets. In fact, Ken Iverson first began using his notation before work on ASCII began, and APL\360 was implemented before the modern ASCII standard was published in 1967. Prior to the widespread adoption of Unicode, many special purpose code pages were used to represent APL symbols. APLs developed more recently, such as NARS2000 and GNU APL, use Unicode characters to represent glyphs, sometimes supporting several different options for a given glyph. Unicode also offers the possibility of introducing glyphs that could not have been produced on older APL systems: for example, both NARS2000 and dzaima/APL use for the Square Root and Root functions.

While Iverson notation was originally handwritten, the choice of glyphs to include in the first APL implementations was influenced by technical constraints of the typewriters used at the time. Notably, many glyphs were produced by overlaying two simpler glyphs, a technique known as overstriking.

Alternatives

Display problems have been mostly eliminated by the broad uptake of Unicode. However some difficulties with typing glyphs remain. Several APL-family languages such as J, K, and ELI have chosen to stick with ASCII, either by reducing and compacting functionality to use one character per glyph or by using multiple characters. Historically there have also been various encodings of APL in smaller character sets, typically as an alternate way of writing code for an APL with traditional glyphs.

Bi-glyphs

J and K use both ASCII symbols on their own, and followed by one or more periods and/or colons. J terminology calls these bigraphs and trigraphs. For example, J uses ^ for Power, ^. for Logarithm, and ^: for the Power operator, while K uses ': for the equivalent of pair-wise reduction (¯2f/) and 0: for line-by-line file read/write.


APL features [edit]
Built-ins Primitives (functions, operators) ∙ Quad name
Array model ShapeRankDepthBoundIndex (Indexing) ∙ AxisRavelRavel orderElementScalarVectorMatrixSimple scalarSimple arrayNested arrayCellMajor cellSubarrayEmpty arrayPrototype
Data types Number (Boolean, Complex number) ∙ Character (String) ∙ BoxNamespaceFunction array
Concepts and paradigms Conformability (Scalar extension, Leading axis agreement) ∙ Scalar function (Pervasion) ∙ Identity elementComplex floorArray ordering (Total) ∙ Tacit programming (Function composition, Close composition) ∙ GlyphLeading axis theoryMajor cell search
Errors LIMIT ERRORRANK ERRORSYNTAX ERRORDOMAIN ERRORLENGTH ERRORINDEX ERRORVALUE ERROREVOLUTION ERROR
APL glyphs [edit]
Information GlyphTyping glyphs (on Linux) ∙ UnicodeFontsMnemonicsOverstrikesMigration level
Individual glyphs Jot () ∙ Right Shoe () ∙ Up Arrow () ∙ Zilde () ∙ High minus (¯) ∙ Dot (.) ∙ Del ()