XCOMM APL support Geoff Streeter 2012-01-04 XCOMM APL was initially an overstruck language. The original APL terrminal was an IBM golfball XCOMM with a specially designed golfball. This meant that characters could be overstruck to XCOMM produce other characters. This gave APL a richness of primitives which is still powerful XCOMM today. Overstrikes were always independent of order. XCOMM APLs have extended this into a number of dialects. Let us try to support lots of them. XCOMM Together with some that have not been used yet. Some traditional ones are not included. XCOMM Characters from "Mathematical Operators" : "√" U221a # v / SQUARE ROOT : "√" U221a # / v SQUARE ROOT <8> <8> : "∞" U221e # 8 8 INFINITY : "≠" U2260 # = / NOT EQUAL TO : "≠" U2260 # / = NOT EQUAL TO : "≡" U2261 # _ = IDENTICAL TO : "≡" U2261 # = _ IDENTICAL TO : "≢" U2262 # _ ≠ NOT IDENTICAL TO : "≢" U2262 # ≠ _ NOT IDENTICAL TO : "≤" U2264 # < _ LESS-THAN OR EQUAL TO : "≤" U2264 # _ < LESS-THAN OR EQUAL TO : "≥" U2265 # > _ GREATER-THAN OR EQUAL TO : "≥" U2265 # _ > GREATER-THAN OR EQUAL TO : "⊆" U2286 # _ ⊂ SUBSET OF OR EQUAL TO : "⊆" U2286 # ⊂ _ SUBSET OF OR EQUAL TO : "⊇" U2287 # _ ⊃ SUPERSET OF OR EQUAL TO : "⊇" U2287 # ⊃ _ SUPERSET OF OR EQUAL TO : "⊖" U2296 # ○ - CIRCLED MINUS : "⊖" U2296 # - ○ CIRCLED MINUS : "⊙" U2299 # ○ - CIRCLED DOT : "⊙" U2299 # - ○ CIRCLED DOT : "⊢" U22a2 # ( - RIGHT TACK : "⊢" U22a2 # - ( RIGHT TACK : "⊣" U22a3 # ) - LEFT TACK : "⊣" U22a3 # - ) LEFT TACK : "⋄" U22c4 # < > DIAMOND OPERATOR : "⋄" U22c4 # > < DIAMOND OPERATOR : "⋄" U22c4 # ∧ ∨ DIAMOND OPERATOR : "⋄" U22c4 # ∨ ∧ DIAMOND OPERATOR XCOMM Characters from "Miscellaneous Technical" : "⌶" U2336 # ⊥ ⊤ APL FUNCTIONAL SYMBOL I-BEAM : "⌶" U2336 # ⊥ ⊤ APL FUNCTIONAL SYMBOL I-BEAM : "⌷" U2337 # [ ] APL FUNCTIONAL SYMBOL SQUISH QUAD : "⌷" U2337 # ] [ APL FUNCTIONAL SYMBOL SQUISH QUAD : "⌸" U2338 # ⎕ = APL FUNCTIONAL SYMBOL QUAD EQUAL : "⌸" U2338 # = ⎕ APL FUNCTIONAL SYMBOL QUAD EQUAL : "⌹" U2339 # ⎕ ÷ APL FUNCTIONAL SYMBOL QUAD DIVIDE : "⌹" U2339 # ÷ ⎕ APL FUNCTIONAL SYMBOL QUAD DIVIDE : "⌺" U233a # ⎕ ⋄ APL FUNCTIONAL SYMBOL QUAD DIAMOND : "⌺" U233a # ⋄ ⎕ APL FUNCTIONAL SYMBOL QUAD DIAMOND : "⌻" U233b # ⎕ ∘ APL FUNCTIONAL SYMBOL QUAD JOT : "⌻" U233b # ∘ ⎕ APL FUNCTIONAL SYMBOL QUAD JOT : "⌼" U233c # ⎕ ○ APL FUNCTIONAL SYMBOL QUAD CIRCLE : "⌼" U233c # ○ ⎕ APL FUNCTIONAL SYMBOL QUAD CIRCLE : "⌽" U233d # ○ | APL FUNCTIONAL SYMBOL CIRCLE STILE : "⌽" U233d # | ○ APL FUNCTIONAL SYMBOL CIRCLE STILE : "⌾" U233e # ○ ∘ APL FUNCTIONAL SYMBOL CIRCLE JOT : "⌾" U233e # ∘ ○ APL FUNCTIONAL SYMBOL CIRCLE JOT : "⌿" U233f # / - APL FUNCTIONAL SYMBOL SLASH BAR : "⌿" U233f # - / APL FUNCTIONAL SYMBOL SLASH BAR : "⍀" U2340 # \ - APL FUNCTIONAL SYMBOL BACKSLASH BAR : "⍀" U2340 # - \ APL FUNCTIONAL SYMBOL BACKSLASH BAR : "⍁" U2341 # / ⎕ APL FUNCTIONAL SYMBOL QUAD SLASH : "⍁" U2341 # ⎕ / APL FUNCTIONAL SYMBOL QUAD SLASH : "⍂" U2342 # \ ⎕ APL FUNCTIONAL SYMBOL QUAD BACKSLASH : "⍂" U2342 # ⎕ \ APL FUNCTIONAL SYMBOL QUAD BACKSLASH : "⍃" U2343 # < ⎕ APL FUNCTIONAL SYMBOL QUAD LESS-THAN : "⍃" U2343 # ⎕ < APL FUNCTIONAL SYMBOL QUAD LESS-THAN : "⍄" U2344 # > ⎕ APL FUNCTIONAL SYMBOL QUAD GREATER-THAN : "⍄" U2344 # ⎕ > APL FUNCTIONAL SYMBOL QUAD GREATER-THAN : "⍅" U2345 # ← | APL FUNCTIONAL SYMBOL LEFTWARDS VANE : "⍅" U2345 # | ← APL FUNCTIONAL SYMBOL LEFTWARDS VANE : "⍆" U2346 # → | APL FUNCTIONAL SYMBOL RIGHTWARDS VANE : "⍆" U2346 # | → APL FUNCTIONAL SYMBOL RIGHTWARDS VANE : "⍇" U2347 # ← ⎕ APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW : "⍇" U2347 # ⎕ ← APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW : "⍈" U2348 # → ⎕ APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW : "⍈" U2348 # ⎕ → APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW : "⍉" U2349 # ○ \ APL FUNCTIONAL SYMBOL CIRCLE SLOPE : "⍉" U2349 # \ ○ APL FUNCTIONAL SYMBOL CIRCLE SLOPE : "⍊" U234a # _ ⊥ APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR : "⍊" U234a # ⊥ _ APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR : "⍋" U234b # ∆ | APL FUNCTIONAL SYMBOL DELTA STILE : "⍋" U234b # | ∆ APL FUNCTIONAL SYMBOL DELTA STILE : "⍌" U234c # ∨ ⎕ APL FUNCTIONAL SYMBOL QUAD DOWN CARET : "⍌" U234c # ⎕ ∨ APL FUNCTIONAL SYMBOL QUAD DOWN CARET : "⍍" U234d # ∆ ⎕ APL FUNCTIONAL SYMBOL QUAD DELTA : "⍍" U234d # ⎕ ∆ APL FUNCTIONAL SYMBOL QUAD DELTA : "⍎" U234e # ∘ ⊥ APL FUNCTIONAL SYMBOL DOWN TACK JOT : "⍎" U234e # ⊥ ∘ APL FUNCTIONAL SYMBOL DOWN TACK JOT : "⍏" U234f # ↑ - APL FUNCTIONAL SYMBOL UPWARDS VANE : "⍏" U234f # - ↑ APL FUNCTIONAL SYMBOL UPWARDS VANE : "⍐" U2350 # ↑ ⎕ APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW : "⍐" U2350 # ⎕ ↑ APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW XCOMM I cannot get anything to work with . Given that no extant APLs use ⍑ I will just leave the lines XCOMM in place. : "⍑" U2351 # ¯ ⊤ APL FUNCTIONAL SYMBOL UP TACK OVERBAR : "⍑" U2351 # ⊤ ¯ APL FUNCTIONAL SYMBOL UP TACK OVERBAR : "⍒" U2352 # ∇ | APL FUNCTIONAL SYMBOL DEL STILE : "⍒" U2352 # | ∇ APL FUNCTIONAL SYMBOL DEL STILE : "⍓" U2353 # ∧ ⎕ APL FUNCTIONAL SYMBOL QUAD UP CARET : "⍓" U2353 # ⎕ ∧ APL FUNCTIONAL SYMBOL QUAD UP CARET : "⍔" U2354 # ∇ ⎕ APL FUNCTIONAL SYMBOL QUAD DEL : "⍔" U2354 # ⎕ ∇ APL FUNCTIONAL SYMBOL QUAD DEL : "⍕" U2355 # ∘ ⊤ APL FUNCTIONAL SYMBOL UP TACK JOT : "⍕" U2355 # ⊤ ∘ APL FUNCTIONAL SYMBOL UP TACK JOT : "⍖" U2356 # ↓ - APL FUNCTIONAL SYMBOL DOWNWARDS VANE : "⍖" U2356 # - ↓ APL FUNCTIONAL SYMBOL DOWNWARDS VANE : "⍗" U2357 # ↓ ⎕ APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW : "⍗" U2357 # ⎕ ↓ APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW XCOMM This line clashes with the (and similar) that appear to be there to provide XCOMM a work around for the problems with . Or to cope with keyboards that do not have (more likely). XCOMM All APL keyboards have , it is used as the -ve sign for numbers. XCOMM I do not know of an extant APL using ⍘ : "⍘" U2358 # ' _ APL FUNCTIONAL SYMBOL QUOTE UNDERBAR : "⍘" U2358 # _ ' APL FUNCTIONAL SYMBOL QUOTE UNDERBAR : "⍙" U2359 # ∆ _ APL FUNCTIONAL SYMBOL DELTA UNDERBAR : "⍙" U2359 # _ ∆ APL FUNCTIONAL SYMBOL DELTA UNDERBAR : "⍚" U235a # ⋄ _ APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR : "⍚" U235a # _ ⋄ APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR : "⍛" U235b # ∘ _ APL FUNCTIONAL SYMBOL JOT UNDERBAR : "⍛" U235b # _ ∘ APL FUNCTIONAL SYMBOL JOT UNDERBAR : "⍜" U235c # ○ _ APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR : "⍜" U235c # _ ○ APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR : "⍝" U235d # ∘ ∩ APL FUNCTIONAL SYMBOL UP SHOE JOT : "⍝" U235d # ∩ ∘ APL FUNCTIONAL SYMBOL UP SHOE JOT : "⍞" U235e # * ¨ APL FUNCTIONAL SYMBOL QUOTE QUAD : "⍞" U235e # ¨ * APL FUNCTIONAL SYMBOL QUOTE QUAD : "⍟" U235f # ○ * APL FUNCTIONAL SYMBOL CIRCLE STAR : "⍟" U235f # * ○ APL FUNCTIONAL SYMBOL CIRCLE STAR : "⍠" U2360 # : ⎕ APL FUNCTIONAL SYMBOL QUAD COLON : "⍠" U2360 # ⎕ : APL FUNCTIONAL SYMBOL QUAD COLON : "⍡" U2361 # ¨ ⊤ APL FUNCTIONAL SYMBOL UP TACK DIAERESIS : "⍡" U2361 # ⊤ ¨ APL FUNCTIONAL SYMBOL UP TACK DIAERESIS : "⍢" U2362 # ¨ ∇ APL FUNCTIONAL SYMBOL DEL DIAERESIS : "⍢" U2362 # ∇ ¨ APL FUNCTIONAL SYMBOL DEL DIAERESIS : "⍣" U2363 # * ¨ APL FUNCTIONAL SYMBOL STAR DIAERESIS : "⍣" U2363 # ¨ * APL FUNCTIONAL SYMBOL STAR DIAERESIS : "⍤" U2364 # ∘ ¨ APL FUNCTIONAL SYMBOL JOT DIAERESIS : "⍤" U2364 # ¨ ∘ APL FUNCTIONAL SYMBOL JOT DIAERESIS : "⍥" U2365 # ○ ¨ APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS : "⍥" U2365 # ¨ ○ APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS : "⍦" U2366 # ∪ | APL FUNCTIONAL SYMBOL DOWN SHOE STILE : "⍦" U2366 # | ∪ APL FUNCTIONAL SYMBOL DOWN SHOE STILE : "⍧" U2367 # ⊂ | APL FUNCTIONAL SYMBOL LEFT SHOE STILE : "⍧" U2367 # | ⊂ APL FUNCTIONAL SYMBOL LEFT SHOE STILE : "⍨" U2368 # ¨ ~ APL FUNCTIONAL SYMBOL TILDE DIAERESIS : "⍨" U2368 # ~ ¨ APL FUNCTIONAL SYMBOL TILDE DIAERESIS : "⍩" U2369 # ¨ > APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS : "⍩" U2369 # > ¨ APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS : "⍪" U236a # , - APL FUNCTIONAL SYMBOL COMMA BAR : "⍪" U236a # - , APL FUNCTIONAL SYMBOL COMMA BAR : "⍫" U236b # ∇ ~ APL FUNCTIONAL SYMBOL DEL TILDE : "⍫" U236b # ~ ∇ APL FUNCTIONAL SYMBOL DEL TILDE <0> : "⍬" U236c # 0 ~ APL FUNCTIONAL SYMBOL ZILDE <0> : "⍬" U236c # ~ 0 APL FUNCTIONAL SYMBOL ZILDE : "⍭" U236d # | ~ APL FUNCTIONAL SYMBOL STILE TILDE : "⍭" U236d # ~ | APL FUNCTIONAL SYMBOL STILE TILDE XCOMM This line does not work. It clashes with XCOMM for Ǭ and XCOMM for ǭ. XCOMM Given that no extant APLs use ⍮ I will just leave the line in place. : "⍮" U236e # _ ; APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR : "⍮" U236e # ; _ APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR : "⍯" U236f # ≠ ⎕ APL FUNCTIONAL SYMBOL QUAD NOT EQUAL : "⍯" U236f # ⎕ ≠ APL FUNCTIONAL SYMBOL QUAD NOT EQUAL : "⍰" U2370 # ? ⎕ APL FUNCTIONAL SYMBOL QUAD QUESTION : "⍰" U2370 # ⎕ ? APL FUNCTIONAL SYMBOL QUAD QUESTION : "⍱" U2371 # ∨ ~ APL FUNCTIONAL SYMBOL DOWN CARET TILDE : "⍱" U2371 # ~ ∨ APL FUNCTIONAL SYMBOL DOWN CARET TILDE : "⍲" U2372 # ∧ ~ APL FUNCTIONAL SYMBOL UP CARET TILDE : "⍲" U2372 # ~ ∧ APL FUNCTIONAL SYMBOL UP CARET TILDE : "⍶" U2376 # ⍺ _ APL FUNCTIONAL SYMBOL ALPHA UNDERBAR : "⍶" U2376 # _ ⍺ APL FUNCTIONAL SYMBOL ALPHA UNDERBAR : "⍷" U2377 # ∊ _ APL FUNCTIONAL SYMBOL EPSILON UNDERBAR : "⍷" U2377 # _ ∊ APL FUNCTIONAL SYMBOL EPSILON UNDERBAR : "⍸" U2378 # ⍳ _ APL FUNCTIONAL SYMBOL IOTA UNDERBAR : "⍸" U2378 # _ ⍳ APL FUNCTIONAL SYMBOL IOTA UNDERBAR : "⍹" U2379 # ⍵ _ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR : "⍹" U2379 # _ ⍵ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR