The programming language
APL uses
a number of symbols, rather than words from natural language, to identify operations, similarly to
mathematical symbols
A mathematical symbol is a figure or a combination of figures that is used to represent a mathematical object, an action on mathematical objects, a relation between mathematical objects, or for structuring the other symbols that occur in a formula. ...
. Prior to the wide adoption of
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, wh ...
, a number of special-purpose
EBCDIC
Extended Binary Coded Decimal Interchange Code (EBCDIC; ) is an eight- bit character encoding used mainly on IBM mainframe and IBM midrange computer operating systems. It descended from the code used with punched cards and the corresponding ...
and non-EBCDIC
code pages were used to represent the symbols required for writing APL.
Character sets
Due to its origins on
IBM Selectric
The IBM Selectric typewriter was a highly successful line of electric typewriters introduced by IBM on 31 July 1961.
Instead of the "basket" of individual typebars that swung up to strike the ribbon and page in a typical typewriter of the perio ...
-based
teleprinter
A teleprinter (teletypewriter, teletype or TTY) is an electromechanical device that can be used to send and receive typed messages through various communications channels, in both point-to-point and point-to-multipoint configurations. Init ...
s, APL symbols have traditionally been represented on the wire using a unique, non-standard character set. In the 1960s and 1970s, few terminal devices existed which could reproduce them, the most popular ones being the
IBM 2741
The IBM 2741 is a printing computer terminal that was introduced in 1965. Compared to the teletypewriter machines that were commonly used as printing terminals at the time,
the 2741 offers 50% higher speed, much higher quality printing, quieter op ...
and
IBM 1050
IBM 1050 Data Communications System is a computer terminal subsystem to send data to and receive data from another 1050 subsystem or IBM computer in the IBM 1400, IBM 7000 or System/360 series. It first became available in 1963 and was used wi ...
fitted with a specific APL print head. Over time, with the universal use of high-quality graphic display, printing devices and
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, wh ...
support, the APL character font problem has largely been eliminated.
Character repertoire
IBM assigns the following character IDs (GCGIDs) to APL syntax, which are used in the definitions of its code pages.
EBCDIC code pages
Code page 293
Code page 293 (
CCSID
A CCSID (coded character set identifier) is a 16-bit number that represents a particular encoding of a specific code page. For example, Unicode is a code page that has several encoding (so called "transformation") forms, like UTF-8, UTF-16 and U ...
293), called "APL (USA)", is an EBCDIC code page which includes APL symbols, in addition to preserving the
basic Latin letters and
Western Arabic numerals
Arabic numerals are the ten numerical digits: , , , , , , , , and . They are the most commonly used symbols to write decimal numbers. They are also used for writing numbers in other systems such as octal, and for writing identifiers such as ...
at their usual EBCDIC locations.
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
Code page 310
Code page 310 ("Graphic Escape APL/TN") includes a larger gamut of symbols, but does not itself include the basic Latin letters or the basic digits.
It is used alongside
Code page 37-2,
with the Code page 310 codes being prefixed by the Graphic Escape (EBCDIC 0x08) control character.
}
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
Code page 351
Code page 351 ("GDDM Default (USA)")
contains most of the characters of
Code page 293 and
Code page 310
The programming language APL uses a number of symbols, rather than words from natural language, to identify operations, similarly to mathematical symbols. Prior to the wide adoption of Unicode, a number of special-purpose EBCDIC and non-EBCDIC c ...
(except
⍷, epsilon with underline) in addition to the letters and digits, by replacing several
control character
In computing and telecommunication, a control character or non-printing character (NPC) is a code point (a number) in a character set, that does not represent a written symbol. They are used as in-band signaling to cause effects other than the ...
s with symbols.
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
7-bit modified ASCII
Code page 371 (IR-68)
Code page 371, registered for use with
ISO/IEC 2022
ISO/IEC 2022 ''Information technology—Character code structure and extension techniques'', is an ISO/IEC standard (equivalent to the ECMA standard ECMA-35, the ANSI standard ANSI X3.41 and the Japanese Industrial Standard JIS X 0202) in the ...
as
ISO-IR-68
The APL Character Set for Workspace Interchange, registered for use with ISO/IEC 2022 as ISO-IR-68, is a character set developed by the APL Working Group of the Canadian Standards Association. IBM calls it Code page 371. It is one of several APL ...
,
is a 7-bit heavily modified ASCII, designed by the APL Working Group of the
Canadian Standards Association
The CSA Group (formerly the Canadian Standards Association; CSA) is a standards organization which develops standards in 57 areas. CSA publishes standards in print and electronic form, and provides training and advisory services. CSA is composed ...
, intended for use with APL in an environment allowing overstriking of characters using the (backspace, 0x08) control code.
8-bit modified and/or extended ASCII
Code page 907
Code page 907 is used by the IBM 3812, like
code page 906.
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
Code page 909
Code page 909 is another encoding for APL, differing from code page 907 in not including the underlined characters, assigning different codes to the APL characters which fall in the 0xB0–DF range, and replacing some of the C0 replacement graphics from code page 437 with alternative encodings for certain APL symbols.
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
Code page 910
Code page 910 is similar to code page 909, but with fewer duplicate horizontal arrows, using the same C0 graphics as code page 437, and including some additional characters.
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, -
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
Unicode
Most APL symbols are present in Unicode, in the
Miscellaneous Technical
Miscellaneous Technical is a Unicode block ranging from U+2300 to U+23FF, which contains various common symbols which are related to and used in the various technical, programming language, and academic professions. For example:
* Symbol ⌂ (H ...
range,
although some APL products may not yet feature Unicode, and some APL symbols may be unused or unavailable in a given vendor's implementation.
As of 2010, Unicode allows APL to be stored in text files, published in print and on the web, and shared through email and instant messaging. Entering APL characters still requires the use of either a specific
input method editor
An input method (or input method editor, commonly abbreviated IME) is an operating system component or program that enables users to generate characters not natively available on their input devices by using sequences of characters (or mouse o ...
or keyboard mapping, or of a specific touch interface. APL keyboard mappings are available for free for the most common operating systems, or can be obtained by adding the Unicode APL symbols to existing keyboard map.
Underscored alphabetic characters
Missing from Unicode are the traditional
underscored alphabetic characters included in some of the APL code pages; their usage has been eliminated or deprecated in most APL implementations. These were produced on APL printing terminals by over-striking a straight capital letter with an underscore character. Some tables show them simulated with underlined and italic markup, not listing Unicode mappings.
IBM assigns them GCGIDs as "LA480000" (which they name "A Line Below Capital/A Underscore (APL)"), "LB480000" ("B Line Below Capital/B Underscore (APL)") and so forth, under the "L" series used for Latin letters.
The use of an even number (48) rather than an odd number (47) is due to being uppercase: compare the use of SD110000 for a lone acute accent , LA110000 for the lowercase , and LA120000 for the uppercase .
They are included in IBM's
private use area
In Unicode, a Private Use Area (PUA) is a range of code points that, by definition, will not be assigned characters by the Unicode Consortium. Three private use areas are defined: one in the Basic Multilingual Plane (), and one each in, and nearl ...
scheme, encoded in reverse‑alphabetical order in the odd-numbered code points from U+F8BF to U+F8F1.
Homologous uses of 47 include the "SD" (diacritic) series GCGID SD470000 for "Line Below/Discontinuous Underscore"
—i.e.
macron below
Macron below is a combining diacritical mark that is used in various orthographies.
A non-combining form is . It is not to be confused with , and . The difference between "macron below" and "low line" is that the latter results in an unbroken ...
, distinct from the ASCII underscore which is SP090000 ("Underline/Continuous Underscore")
—and the "A" (
Arabic letter) series GCGID AD470009 for the
ḏāl,
for example. Unicode's
Latin Extended Additional
Latin Extended Additional is a Unicode block.
The characters in this block are mostly precomposed combinations of Latin letters with one or more general diacritical marks. Ninety of the characters are used in the Vietnamese alphabet. There are a ...
block includes the following capital "Line Below" characters with the macron below diacritic, for Semitic transcription (it includes a pre-composed ẖ only in lowercase):
*
*
*
*
*
*
*
*
However, this does not cover the entire
ISO basic Latin alphabet
The ISO basic Latin alphabet is an international standard (beginning with ISO/IEC 646) for a Latin-script alphabet that consists of two sets (uppercase and lowercase) of 26 letters, codified in various national and international standards and ...
, and IBM's reference glyphs for the APL characters show them both underlined and
oblique
Oblique may refer to:
* an alternative name for the character usually called a slash (punctuation) ( / )
*Oblique angle, in geometry
*Oblique triangle, in geometry
* Oblique lattice, in geometry
* Oblique leaf base, a characteristic shape of the b ...
,
and tables simulating them with markup may follow suit.
Unicode's
Mathematical Alphanumeric Symbols
Mathematical Alphanumeric Symbols is a Unicode block comprising styled forms of Latin and Greek letters and decimal digits that enable mathematicians to denote different notions with different letter styles. The letters in various fonts ofte ...
block includes italic characters for use in notations where they are contrastive with non-italic characters. Unicode also includes combining forms of the macron below and underscore in the
Combining Diacritical Marks block; the characters above canonically decompose with the former:
*
*
Keyboard layout
Note the mnemonics associating an APL character with a letter: (''question mark'') on , (''power'') on , (''rho'') on , (''base value'') on , (''eNcode'') on , (''modulus'') on and so on. This makes it easier for an English-language speaker to type APL on a non-APL keyboard, providing one has visual feedback on one's screen. Also, decals have been produced for attachment to standard keyboards, either on the front of the keys or on the top of them.
Later IBM terminals, notably the
IBM 3270 display stations, had an alternate keyboard arrangement which is the basis for some of the modern APL keyboard layouts in use today.
Further APL characters were available by
overstriking one character with another. For example, the ''log'' symbol (⍟) was formed by overstriking with . This extended the graphic abilities of the earlier teleprinters, but made it more complex to correct errors and edit program lines.
New overstrikes were introduced by vendors as they produced versions of APL tailored to specific hardware, system features, file systems, and so on. Further, printing terminals and early APL cathode-ray terminals were able to display arbitrary overstrikes, but as personal computers rapidly replaced terminals as a data-entry device, APL character support became provided as an ''APL Character Generator ROM'' or a soft character set rendered by the display device. With the advent of the modern PC, APL characters were defined in specific fonts, eliminating the distinction between overstruck characters and standard characters.
Finally, the symbols were ratified in Unicode and given specific code points, with unambiguous interpretations, independently of the graphic font.
See also
*
APL syntax and symbols
*
ISO IR-68
Footnotes
References
External links
IBM code page 293a.k.a. the APL code page on
mainframe computers
IBM code page 907a.k.a. the APL ASCII code page
{{APL programming language
APL programming language family
Character sets