Difference between revisions of "Unicode"
m 

(11 intermediate revisions by 3 users not shown)  
Line 1:  Line 1:  
−  The advent of '''[[wikipedia:UnicodeUnicode]]''' solved many problems with dealing with APL [[glyphcharacter]]s, however there was still some wiggle room as to which Unicode [[wikipedia:code pointcodepoint]] were to be used in a Unicode implementation of APL, and different implementors made different choices. This article, which documents these differences, is adapted from an original paper by [[Bob Smith]]<ref>Smith, Bob.  +  The advent of '''[[wikipedia:UnicodeUnicode]]''' solved many problems with dealing with APL [[glyphcharacter]]s, however there was still some wiggle room as to which Unicode [[wikipedia:code pointcodepoint]] were to be used in a Unicode implementation of APL, and different implementors made different choices. This article, which documents these differences, is adapted from an original paper by [[Bob Smith]]<ref>Smith, Bob. ''APL Characters and Their Aliases''. 14 Dec 2013–25 Dec 2019. Sudley Place Software.</ref> that attempted to raise awareness of these issues because the differences impede transfer of information. 
The relevant document for the APL character set is the ''APL Character Repertoire'' (ACR)<ref>ISOIEC/JTC1/SC22/WG3. [http://std.dkuug.dk/jtc1/sc22/open/n3067.pdf N3067]: APL Character Repertoire. 28 Dec 1999.</ref>. For whatever reasons, that document never became a standard, but it does provide some guidance, and is better than each implementor making separate choices.  The relevant document for the APL character set is the ''APL Character Repertoire'' (ACR)<ref>ISOIEC/JTC1/SC22/WG3. [http://std.dkuug.dk/jtc1/sc22/open/n3067.pdf N3067]: APL Character Repertoire. 28 Dec 1999.</ref>. For whatever reasons, that document never became a standard, but it does provide some guidance, and is better than each implementor making separate choices.  
==Introduction==  ==Introduction==  
−  There are a surprising number of similar APL characters in Unicode and in several cases some implementors went one way, others the other way. The following table lists the characters in question, along with the way [[APL2]], [[Dyalog]], [[GNU APL]], [[NARS2000]], [[ngn/apl]], and [[dzaima/APL]] behave. APL2000 states that ''Generally the default codepoint scheme for the VisualAPL product follows the IBM APL2 workstation scheme''. Please [https://aplwiki.com/index.php?title=Unicode&action=edit edit]  +  There are a surprising number of similar APL characters in Unicode and in several cases some implementors went one way, others the other way. The following table lists the characters in question, along with the way [[APL2]], [[Dyalog]], [[GNU APL]], [[NARS2000]], [[ngn/apl]], and [[dzaima/APL]] behave. APL2000 states that ''Generally the default codepoint scheme for the VisualAPL product follows the IBM APL2 workstation scheme''. Please [https://aplwiki.com/index.php?title=Unicode&action=edit§ion=2 edit] the table if you believe there are other characters that should be included in the table, or to add another dialect. 
When there are differences among APL implementations, users can become confused. They type something into one APL system, copy it to another and are greeted by a [[SYNTAX ERROR]] or the like.  When there are differences among APL implementations, users can become confused. They type something into one APL system, copy it to another and are greeted by a [[SYNTAX ERROR]] or the like.  
−  The whole basis for the confusion in a lengthy thread on comp.lang.apl entitled ''caret vs and''<ref>[https://groups.google.com/forum/#!forum/comp.lang.apl comp.lang.apl]. [https://groups.google.com/d/msg/comp.lang.apl/LTVHTxEZI0/DAPcTrVPnmwJ caret vs and]. 28 Oct 2013–9 Dec 2013</ref>  +  The whole basis for the confusion in a lengthy thread on comp.lang.apl entitled ''caret vs and''<ref>[https://groups.google.com/forum/#!forum/comp.lang.apl comp.lang.apl]. [https://groups.google.com/d/msg/comp.lang.apl/LTVHTxEZI0/DAPcTrVPnmwJ caret vs and]. 28 Oct 2013–9 Dec 2013</ref> was that in some implementations the symbol for the logical [[And]] function was U+005E only, in some implementations it was U+2227 only, and in some both characters worked. The original poster encountered some APL text from the [[APL Wiki]] that had been produced by a system that supports U+005E and copied it into a system that used U+2227 only and failed on U+005E. 
−  When  +  When systems differ in the set of acceptable characters for the same function, it serves only to confuse the end user to the detriment of the community. The cautious APL programmer can avoid such problems by choosing symbols that work across dialects. Note that in the below table, there is exactly one universally accepted codepoint for each symbol (these have been indicated by a single "Universal" cell stretching across the row), except for And where APL2 doesn't recognise the otherwise universal U+2227. However, APL2 does not have And extended to Least Common Multiple, so it is equivalent to Times (<source lang=apl inline>×</source>) which can therefore be used instead for truly portable code. 
==Comparison of implementations==  ==Comparison of implementations==  
+  The following characters are included have been encountered in APL code displayed somewhere on the Internet or in a PDF file. Blindly copying them into an APL [[session]] can produce an error which might well confuse the user.  
{ class=wikitable style=textalign:center  { class=wikitable style=textalign:center  
! APL name !! Glyph !! Codepoint !! Unicode name !! [[APL2]] !! [[Dyalog APLDyalog<br>APL]] !! [[GNU APLGNU<br>APL]] !! [[NARS2000NARS<br>2000]] !! [[ngn/aplngn/<br>apl]] !! [[dzaima/APLdzaima/<br>APL]] !! Monadic  Dyadic  ! APL name !! Glyph !! Codepoint !! Unicode name !! [[APL2]] !! [[Dyalog APLDyalog<br>APL]] !! [[GNU APLGNU<br>APL]] !! [[NARS2000NARS<br>2000]] !! [[ngn/aplngn/<br>apl]] !! [[dzaima/APLdzaima/<br>APL]] !! Monadic  Dyadic  
    
! rowspan=2  Star  ! rowspan=2  Star  
−   <source lang=apl inline>*</source>  U+002A  Asterisk  {{Yes  +   <source lang=apl inline>*</source>  U+002A  Asterisk  colspan=6 {{YesUniversal}}  rowspan=2  [[Exponential]]  rowspan=2  [[PowerPower]] 
    
 <source lang=apl inline>⋆</source>  U+26AA Star operator  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}   <source lang=apl inline>⋆</source>  U+26AA Star operator  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}  
    
! rowspan=2  Minus  ! rowspan=2  Minus  
−   <source lang=apl inline></source>  U+002D  Hyphenminus  {{Yes  +   <source lang=apl inline></source>  U+002D  Hyphenminus  colspan=6 {{YesUniversal}}  rowspan=2  [[Negate]]  rowspan=2  [[Minus]] 
    
 <source lang=apl inline>−</source>  U+2212  Minus sign  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}   <source lang=apl inline>−</source>  U+2212  Minus sign  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}  
Line 29:  Line 30:  
 <source lang=apl inline>^</source>  U+005E  Circumflex accent  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}  rowspan=2   rowspan=2  [[And]]   <source lang=apl inline>^</source>  U+005E  Circumflex accent  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}  rowspan=2   rowspan=2  [[And]]  
    
−   <source lang=apl inline>∧</source>  U+22BD  Logical And  {{No}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  +   <source lang=apl inline>∧</source>  U+22BD  Logical And  {{NoNo<ref><source lang=apl inline>×</source> (U+00D7) is a universally supported substitute</ref>}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}} 
    
! rowspan=2  Stile  ! rowspan=2  Stile  
−   <source lang=apl inline></source>  U+007C  Vertical line  {{Yes  +   <source lang=apl inline></source>  U+007C  Vertical line  colspan=6 {{YesUniversal}}  rowspan=2  [[Magnitude]]  rowspan=2  [[Residue]] 
    
 <source lang=apl inline>∣</source>  U+2212  Divides  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}   <source lang=apl inline>∣</source>  U+2212  Divides  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{Yes}}  {{No}}  
    
! rowspan=2  Tilde  ! rowspan=2  Tilde  
−   <source lang=apl inline>~</source>  U+007E  Tilde  {{Yes  +   <source lang=apl inline>~</source>  U+007E  Tilde  colspan=6 {{YesUniversal}}  rowspan=2  [[Not]]  rowspan=2  [[Without]] 
    
 <source lang=apl inline>∼</source>  U+223C  Tilde operator  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}   <source lang=apl inline>∼</source>  U+223C  Tilde operator  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  
    
! rowspan=2  Alpha  ! rowspan=2  Alpha  
−   <source lang=apl inline>α</source>  U+03B1  Greek small letter Alpha  rowspan=2   {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2 colspan=2  [[Left Argument]]  +   <source lang=apl inline>α</source>  U+03B1  Greek small letter Alpha  rowspan=2   {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2 colspan=2  [[dfnLeft Argument]] 
    
−   <source lang=apl inline>⍺</source>  U+237A  APL functional symbol Alpha  {{Yes  +   <source lang=apl inline>⍺</source>  U+237A  APL functional symbol Alpha  colspan=5 {{YesUniversal}} 
    
! rowspan=2  Omega  ! rowspan=2  Omega  
−   <source lang=apl inline>ω</source>  U+03C9  Greek small letter Omega  rowspan=2   {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2 colspan=2  [[Right Argument]]  +   <source lang=apl inline>ω</source>  U+03C9  Greek small letter Omega  rowspan=2   {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2 colspan=2  [[dfnRight Argument]] 
    
−   <source lang=apl inline>⍵</source>  U+237A  APL functional symbol Omega  {{Yes  +   <source lang=apl inline>⍵</source>  U+237A  APL functional symbol Omega  colspan=5 {{YesUniversal}} 
    
! rowspan=2  Epsilon  ! rowspan=2  Epsilon  
 <source lang=apl inline>∈</source><ref>Found by Hanspeter Moser in [https://www.gnu.org/software/apl/Bits_and_Pieces/torontotoolkit.apl.html The Toronto Toolkit]</ref>  U+2208  Element of  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2  [[Enlist]]/[[Type]]  rowspan=2  [[Membership]]   <source lang=apl inline>∈</source><ref>Found by Hanspeter Moser in [https://www.gnu.org/software/apl/Bits_and_Pieces/torontotoolkit.apl.html The Toronto Toolkit]</ref>  U+2208  Element of  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2  [[Enlist]]/[[Type]]  rowspan=2  [[Membership]]  
    
−   <source lang=apl inline>∊</source>  U+220A  Small Element of  {{Yes  +   <source lang=apl inline>∊</source>  U+220A  Small Element of  colspan=6 {{YesUniversal}} 
    
−  ! rowspan=2  Jot  +  ! rowspan=2  [[Jot]] 
−   <source lang=apl inline>∘</source>  U+2218  Ring operator  {{Yes  +   <source lang=apl inline>∘</source>  U+2218  Ring operator  colspan=6 {{YesUniversal}}  rowspan=2  [[Outer product]]  rowspan=2  [[Beside]]/[[Bind]] 
    
 <source lang=apl inline>◦</source>  U+25E6  White bullet  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}   <source lang=apl inline>◦</source>  U+25E6  White bullet  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  
    
! rowspan=2  Less than or<br>equal to  ! rowspan=2  Less than or<br>equal to  
−   <source lang=apl inline>≤</source>  U+2264  Lessthan or equal to  {{Yes  +   <source lang=apl inline>≤</source>  U+2264  Lessthan or equal to  colspan=6 {{YesUniversal}}  rowspan=2   rowspan=2  [[Less than or equal toLess than or<br>equal to]] 
    
 <source lang=apl inline>⩽</source>  U+2A7D  Less than or slanted equal to  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}   <source lang=apl inline>⩽</source>  U+2A7D  Less than or slanted equal to  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  
    
! rowspan=2  Greater than or<br>equal to  ! rowspan=2  Greater than or<br>equal to  
−   <source lang=apl inline>≥</source>  U+2265  Greater than or equal to  {{Yes  +   <source lang=apl inline>≥</source>  U+2265  Greater than or equal to  colspan=6 {{YesUniversal}}  rowspan=2   rowspan=2  [[Greater than or equal toGreater than or<br>equal to]] 
    
 <source lang=apl inline>⩾</source>  U+2A7E  Greater than or slanted equal to  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}   <source lang=apl inline>⩾</source>  U+2A7E  Greater than or slanted equal to  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  
Line 74:  Line 75:  
 <source lang=apl inline>⊽</source>  U+22BD  Nor  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2   rowspan=2  [[Nor]]   <source lang=apl inline>⊽</source>  U+22BD  Nor  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2   rowspan=2  [[Nor]]  
    
−   <source lang=apl inline>⍱</source>  U+2371  APL functional symbol down caret tilde  {{Yes  +   <source lang=apl inline>⍱</source>  U+2371  APL functional symbol down caret tilde  colspan=6 {{YesUniversal}} 
    
! rowspan=2  Logical Nand  ! rowspan=2  Logical Nand  
 <source lang=apl inline>⊼</source>  U+22BC  Nand  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2   rowspan=2  [[Nand]]   <source lang=apl inline>⊼</source>  U+22BC  Nand  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  rowspan=2   rowspan=2  [[Nand]]  
    
−   <source lang=apl inline>⍱</source>  U+2372  APL functional symbol up caret tilde  {{Yes  +   <source lang=apl inline>⍱</source>  U+2372  APL functional symbol up caret tilde  colspan=6 {{YesUniversal}} 
    
! rowspan=4  Diamond  ! rowspan=4  Diamond  
−   <source lang=apl inline>⋄</source>  U+22C4  Diamond operator  {{Yes  +   <source lang=apl inline>⋄</source>  U+22C4  Diamond operator  colspan=6 {{YesUniversal}}  rowspan=4 colspan=2  [[Statement Separator]] 
    
 <source lang=apl inline>◇</source>  U+25C7  White Diamond  {{No}}  {{No}}  {{No}}  {{Yes}}  {{No}}  {{No}}   <source lang=apl inline>◇</source>  U+25C7  White Diamond  {{No}}  {{No}}  {{No}}  {{Yes}}  {{No}}  {{No}}  
Line 91:  Line 92:  
    
! rowspan=2  Quad  ! rowspan=2  Quad  
−   <source lang=apl inline>⎕</source>  U+2395  APL functional symbol Quad  {{Yes  +   <source lang=apl inline>⎕</source>  U+2395  APL functional symbol Quad  colspan=6 {{YesUniversal}}  rowspan=2 colspan=2  [[Quad name]] 
    
 <source lang=apl inline>▯</source>  U+26AA  White vertical rectangle  {{Yes}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}   <source lang=apl inline>▯</source>  U+26AA  White vertical rectangle  {{Yes}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  
    
! rowspan=2  Circle  ! rowspan=2  Circle  
−   <source lang=apl inline>○</source>  U+25CB  White circle  {{Yes  +   <source lang=apl inline>○</source>  U+25CB  White circle  colspan=6 {{YesUniversal}}  rowspan=2  [[Pi Times]]  rowspan=2  [[Circle functionCircular]] 
    
 <source lang=apl inline>⚪</source>  U+26AA  Medium white circle  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}   <source lang=apl inline>⚪</source>  U+26AA  Medium white circle  {{No}}  {{No}}  {{Yes}}  {{Yes}}  {{No}}  {{No}}  
}  }  
−  
== Functionality ==  == Functionality ==  
Line 140:  Line 140:  
⍎⎕← '1',(⎕UCS 16⊥2 3 7 2),'1' ⍝ Nand  ⍎⎕← '1',(⎕UCS 16⊥2 3 7 2),'1' ⍝ Nand  
</source>  </source>  
−  Note that the last four lines will not work on a system that doesn’t support [[  +  Note that the last four lines will not work on a system that doesn’t support [[dfn]]s. 
==Atomic Vector==  ==Atomic Vector==  
Line 150:  Line 150:  
== References ==  == References ==  
<references/>  <references/>  
+  {{APL glyphs}}[[Category:APL character set]] 
Latest revision as of 16:06, 5 February 2021
The advent of Unicode solved many problems with dealing with APL characters, however there was still some wiggle room as to which Unicode codepoint were to be used in a Unicode implementation of APL, and different implementors made different choices. This article, which documents these differences, is adapted from an original paper by Bob Smith^{[1]} that attempted to raise awareness of these issues because the differences impede transfer of information.
The relevant document for the APL character set is the APL Character Repertoire (ACR)^{[2]}. For whatever reasons, that document never became a standard, but it does provide some guidance, and is better than each implementor making separate choices.
Contents
Introduction
There are a surprising number of similar APL characters in Unicode and in several cases some implementors went one way, others the other way. The following table lists the characters in question, along with the way APL2, Dyalog, GNU APL, NARS2000, ngn/apl, and dzaima/APL behave. APL2000 states that Generally the default codepoint scheme for the VisualAPL product follows the IBM APL2 workstation scheme. Please edit the table if you believe there are other characters that should be included in the table, or to add another dialect.
When there are differences among APL implementations, users can become confused. They type something into one APL system, copy it to another and are greeted by a SYNTAX ERROR or the like.
The whole basis for the confusion in a lengthy thread on comp.lang.apl entitled caret vs and^{[3]} was that in some implementations the symbol for the logical And function was U+005E only, in some implementations it was U+2227 only, and in some both characters worked. The original poster encountered some APL text from the APL Wiki that had been produced by a system that supports U+005E and copied it into a system that used U+2227 only and failed on U+005E.
When systems differ in the set of acceptable characters for the same function, it serves only to confuse the end user to the detriment of the community. The cautious APL programmer can avoid such problems by choosing symbols that work across dialects. Note that in the below table, there is exactly one universally accepted codepoint for each symbol (these have been indicated by a single "Universal" cell stretching across the row), except for And where APL2 doesn't recognise the otherwise universal U+2227. However, APL2 does not have And extended to Least Common Multiple, so it is equivalent to Times (×
) which can therefore be used instead for truly portable code.
Comparison of implementations
The following characters are included have been encountered in APL code displayed somewhere on the Internet or in a PDF file. Blindly copying them into an APL session can produce an error which might well confuse the user.
APL name  Glyph  Codepoint  Unicode name  APL2  Dyalog APL 
GNU APL 
NARS 2000 
ngn/ apl 
dzaima/ APL 
Monadic  Dyadic 

Star  * 
U+002A  Asterisk  Universal  Exponential  Power  
⋆ 
U+26AA  Star operator  No  No  Yes  Yes  Yes  No  
Minus   
U+002D  Hyphenminus  Universal  Negate  Minus  
− 
U+2212  Minus sign  No  No  Yes  Yes  Yes  No  
Logical And  ^ 
U+005E  Circumflex accent  Yes  Yes  Yes  Yes  Yes  No  And  
∧ 
U+22BD  Logical And  No^{[4]}  Yes  Yes  Yes  Yes  Yes  
Stile   
U+007C  Vertical line  Universal  Magnitude  Residue  
∣ 
U+2212  Divides  Yes  Yes  Yes  Yes  Yes  No  
Tilde  ~ 
U+007E  Tilde  Universal  Not  Without  
∼ 
U+223C  Tilde operator  No  No  Yes  Yes  No  No  
Alpha  α 
U+03B1  Greek small letter Alpha  No  Yes  Yes  No  No  Left Argument  
⍺ 
U+237A  APL functional symbol Alpha  Universal  
Omega  ω 
U+03C9  Greek small letter Omega  No  Yes  Yes  No  No  Right Argument  
⍵ 
U+237A  APL functional symbol Omega  Universal  
Epsilon  ∈ ^{[5]} 
U+2208  Element of  No  No  Yes  Yes  No  No  Enlist/Type  Membership 
∊ 
U+220A  Small Element of  Universal  
Jot  ∘ 
U+2218  Ring operator  Universal  Outer product  Beside/Bind  
◦ 
U+25E6  White bullet  No  No  Yes  Yes  No  No  
Less than or equal to 
≤ 
U+2264  Lessthan or equal to  Universal  Less than or equal to  
⩽ 
U+2A7D  Less than or slanted equal to  No  No  Yes  Yes  No  No  
Greater than or equal to 
≥ 
U+2265  Greater than or equal to  Universal  Greater than or equal to  
⩾ 
U+2A7E  Greater than or slanted equal to  No  No  Yes  Yes  No  No  
Logical Nor  ⊽ 
U+22BD  Nor  No  No  Yes  Yes  No  No  Nor  
⍱ 
U+2371  APL functional symbol down caret tilde  Universal  
Logical Nand  ⊼ 
U+22BC  Nand  No  No  Yes  Yes  No  No  Nand  
⍱ 
U+2372  APL functional symbol up caret tilde  Universal  
Diamond  ⋄ 
U+22C4  Diamond operator  Universal  Statement Separator  
◇ 
U+25C7  White Diamond  No  No  No  Yes  No  No  
◊ 
U+25CA  Lozenge  No  No  Yes  Yes  No  No  
⬦ 
U+2B26  Diamond  No  No  Yes  Yes  No  No  
Quad  ⎕ 
U+2395  APL functional symbol Quad  Universal  Quad name  
▯ 
U+26AA  White vertical rectangle  Yes  No  Yes  Yes  No  No  
Circle  ○ 
U+25CB  White circle  Universal  Pi Times  Circular  
⚪ 
U+26AA  Medium white circle  No  No  Yes  Yes  No  No 
Functionality
The following statements can be used to test the functionality of the symbols:
⍎⎕← '1',(⎕UCS 16⊥0 0 2 10),'1' ⍝ Star
⍎⎕← '1',(⎕UCS 16⊥2 2 12 6),'1' ⍝ Star
⍎⎕← '1',(⎕UCS 16⊥0 0 2 13),'1' ⍝ Minus
⍎⎕← '1',(⎕UCS 16⊥2 2 1 2),'1' ⍝ Minus
⍎⎕← '1',(⎕UCS 16⊥0 0 5 14),'1' ⍝ And
⍎⎕← '1',(⎕UCS 16⊥2 2 2 7),'1' ⍝ And
⍎⎕← '1',(⎕UCS 16⊥0 0 7 12),'1' ⍝ Modulus
⍎⎕← '1',(⎕UCS 16⊥2 2 2 3),'1' ⍝ Modulus
⍎⎕← (⎕UCS 16⊥0 0 7 14),'1' ⍝ Tilde
⍎⎕← (⎕UCS 16⊥2 2 3 12),'1' ⍝ Tilde
⍎⎕←'1{',(⎕UCS 16⊥0 3 11 1),'}1' ⍝ Alpha
⍎⎕←'1{',(⎕UCS 16⊥2 3 7 10),'}1' ⍝ Alpha
⍎⎕← '{',(⎕UCS 16⊥0 3 12 9),'}1' ⍝ Omega
⍎⎕← '{',(⎕UCS 16⊥2 3 7 5),'}1' ⍝ Omega
⍎⎕← '1',(⎕UCS 16⊥2 2 0 8),'1' ⍝ Epsilon
⍎⎕← '1',(⎕UCS 16⊥2 2 0 10),'1' ⍝ Epsilon
⍎⎕← '1',(⎕UCS 16⊥2 2 1 8),'.=1' ⍝ Jot
⍎⎕← '1',(⎕UCS 16⊥2 5 14 6),'.=1' ⍝ Jot
⍎⎕← '1',(⎕UCS 16⊥2 2 6 4),'1' ⍝ Less than or equal to
⍎⎕← '1',(⎕UCS 16⊥2 10 7 13),'1' ⍝ Less than or equal to
⍎⎕← '1',(⎕UCS 16⊥2 2 6 5),'1' ⍝ Greater than or equal to
⍎⎕← '1',(⎕UCS 16⊥2 10 7 14),'1' ⍝ Greater than or equal to
⍎⎕← '1',(⎕UCS 16⊥2 2 11 13),'1' ⍝ Nor
⍎⎕← '1',(⎕UCS 16⊥2 3 7 1),'1' ⍝ Nor
⍎⎕← '1',(⎕UCS 16⊥2 2 11 12),'1' ⍝ Nand
⍎⎕← '1',(⎕UCS 16⊥2 2 12 4),'1' ⍝ Diamond
⍎⎕← '1',(⎕UCS 16⊥2 5 12 7),'1' ⍝ Diamond
⍎⎕← '1',(⎕UCS 16⊥2 5 12 10),'1' ⍝ Diamond
⍎⎕← '1',(⎕UCS 16⊥2 11 2 6),'1' ⍝ Diamond
⍎⎕← (⎕UCS 16⊥2 3 9 5),'←1' ⍝ Quad
⍎⎕← (⎕UCS 16⊥2 5 10 15),'←1' ⍝ Quad
⍎⎕← '1',(⎕UCS 16⊥2 5 12 11),'1' ⍝ Circle
⍎⎕← '1',(⎕UCS 16⊥2 6 10 10),'1' ⍝ Circle
⍎⎕← '1',(⎕UCS 16⊥2 3 7 2),'1' ⍝ Nand
Note that the last four lines will not work on a system that doesn’t support dfns.
Atomic Vector
If the Atomic vector (⎕AV
) has no room in which to include these new characters, an implementation can translate them on entry to the corresponding symbol that is in ⎕AV
. NARS2000 even has a means of translating symbols on the way out via Copy (Ctrl+C in Windows) to various other APL systems that don't support the same set of principal characters NARS2000 uses for the functions in the above table.
Considerations
Unicode was a great start to enabling APL characters to be used, however in order for there to be interoperability, implementors have to agree upon which characters are functional. It doesn't matter if one's system can change the mapping of glyphs to codepoints as the vast majority of users won't change from the default behavior. Implementors therefore have to decide if it is worthwhile to support the above codepoints.
References
 ↑ Smith, Bob. APL Characters and Their Aliases. 14 Dec 2013–25 Dec 2019. Sudley Place Software.
 ↑ ISOIEC/JTC1/SC22/WG3. N3067: APL Character Repertoire. 28 Dec 1999.
 ↑ comp.lang.apl. caret vs and. 28 Oct 2013–9 Dec 2013
 ↑
×
(U+00D7) is a universally supported substitute  ↑ Found by Hanspeter Moser in The Toronto Toolkit
APL glyphs [edit]  

Information  Glyph ∙ Typing glyphs (on Linux) ∙ Unicode ∙ Fonts ∙ Mnemonics ∙ Overstrikes 
Individual glyphs  Jot (∘ ) ∙ Right Shoe (⊃ ) ∙ Up Arrow (↑ ) ∙ Zilde (⍬ ) ∙ High minus (¯ ) ∙ Dot (. ) ∙ Del (∇ )
