Extended Dyalog APL
Revision as of 16:14, 9 August 2022 by Adám Brudzewsky (talk  contribs)
Extended Dyalog APL features extended domains of existing primitives and quad names and adds a few new ones to Dyalog APL. It was an experimental project that is no longer maintained. Quoting from project README.md:
This project serves as a breeding ground for ideas. While some have been adopted into Dyalog APL proper, it is unlikely that many will be. Furthermore, Dyalog 18.0 gave a different meaning to monadic ≠ than proposed here, leaving Extended Dyalog APL as a deadend.
Features
The following extensions were made:
Name  Glyph  Type*  Extension 
Back Slash  \ 
🔶  ∘.f when dyadic, allows short and/or multiple left args

Back Slash Bar  ⍀ 
🔶  ⊢∘f when dyadic, allows short and/or multiple left args

Bullet  ∙ 
🔺  Inner product and Alternant 
Circle Diaeresis  ⍥ 
🔺  Over and Depth 
Circle Jot  ⌾ 
🔺  Complex/Imaginary 
Del Diaeresis  ⍢ 
🔺  Under (a.k.a. Dual) 
Del Tilde  ⍫ 
🔺  Obverse;⍺⍺ but with inverse⍵⍵

Diaeresis  ¨ 
🔵  allows constant operand 
Divide  ÷ 
🔵  monadic converts letters to title case when possible 
Dollar Sign  $ 
🔺  string enhancement ${1} :1⊃⍺ , ${expr} :⍎expr ,\n :JSON

Down Arrow  ↓ 
🔵  allows long⍺

Down Shoe  ∪ 
🔵  allows rank>1 
Downstile  ⌊ 
🔵  monadic lowercases letters 
Down Tack  ⊤ 
🔶  2s as default left argument 
Ellipsis  … 
🔺  fill sequence gaps (dfns workspace'sto⍤1

Epsilon Underbar  ⍷ 
🔶  monadic is Type∊ with⎕ML←0

Equals  = 
🔶  with TAO; monad: istype 
Greater Than  > 
🔶  with TAO; monad: isstrictlynegative/isvisible 
Greater Than Or Equal To  ≥ 
🔶  with TAO; monad: is nonpositive/isnotcontrolcharacter 
house  ⌂ 
🔺  prefix for contents of dfns workspace 
infinity  ∞ 
🔺  largest integer (for use with⍤ and⍣ )

Iota  ⍳ 
🔵  Unicode version of dfns workspace's iotag

Iota Underbar  ⍸ 
🔵  allows duplicates/nonBooleans 
Iota Underbar Inverse  ⍸⍣¯1 
🔵  givenr , findsn so thatr≡⍸n

Jot Diaeresis  ⍤ 
🔵  allows constant left operand, Atop with function right operand 
Jot Underbar  ⍛ 
🔺  reverse compositionX f⍛g Y is(f X) g Y

Left Shoe  ⊂ 
🔵  allows partitioning along multiple trailing axes, with short ⍺ s, and inserting/appending empty partitions

Left Shoe Stile  ⍧ 
🔺  monad: nubsieve; dyad: countin 
Left Shoe With Axis  ⊂[k] 
🔵  as⊂ , but called with left operand

Less Than  < 
🔶  with TAO; monad: isstrictlypositive/iscontrolcharacter 
Less Than Or Equal To  ≤ 
🔶  with TAO ; monad: isnonnegative/isinvisible 
Minus   
🔵  monadic flips letter case 
macron  ¯ 
🔵  as prefix to name or primitive means its inverse 
negative Infinity  ¯∞ 
🔺  smallest integer (for use with⍣ )

Nand  ⍲ 
🔶  monad: not all equal to type 
Nor  ⍱ 
🔶  monad: not any equal to type 
Not Equal To  ≠ 
🔶  with TAO; monad: isnontype 
Percent  % 
🔺  f% andA% : probabilitylogical function (mapping arrays)

Quad Diamond  ⌺ 
🔶  autoextended⍵⍵ , allows small⍵ , optional edge spec(s) (0:Zero; 1:Repl; 2:Rev; 3:Mirror; 4:Wrap; :Twist) with masks as operand's⍺

Question Mark  ? 
🔵  
Rho  ⍴ 
🔵  allows omitting one dimension length with¯1

Right Shoe Underbar  ⊇ 
🔺  monadic discloses if scalar, dyadic indexes sanely 
Right Shoe Underbar With Axis  ⊇[k] 
🔺  as above, but called with left operand 
Root  √ 
🔺  (Square) Root 
Semicolon Underbar  ⍮ 
🔺  (Half) Pair; use↑⍤⍮ to add axis

Slash  / 
🔵  allows short and/or multiple left args 
Slash Bar  ⌿ 
🔵  allows short and/or multiple left args 
Star Diaeresis  ⍣ 
🔵  allows nonscalar right operand incl.∞ and¯∞ and array left operand

Stile   
🔵  monadic normalises letters to lowercase (upper then lower) 
Stile Tilde  ⍭ 
🔺  monadic is factors; dyadic depends on⍺ : 0=nonprime?, 1=prime?, ¯1=primes less than⍵ , ¯2=⍵ th prime, 4=next prime, ¯4=prev prime

Tilde  ~ 
🔵  monadic allows probabilities, dyadic allows rank>1 
Tilde Diaeresis  ⍨ 
🔵  allows constant operand 
Times  × 
🔵  set/query letter case (lower:¯1 , title:0 , upper:1 )

Up Arrow  ↑ 
🔵  allows long⍺

Up Shoe  ∩ 
🔶  monadic is selfclassify; dyadic allows rank>1 
Upstile  ⌈ 
🔵  monadic uppercases letters 
Up Tack  ⊥ 
🔶  2 as default left argument 
Vel  ∨ 
🔶  monadic is Descending Sort 
Wedge  ∧ 
🔶  monadic is Ascending Sort 
Case Convert  ⎕C 
🔺  fn ⎕C applies caseinsensitively,array ⎕C casefolds

Error Message  ⎕EM 
🔺  Selfinverse⎕EM

Namespace  ⎕NS 
🔵  allows⎕NS names values (tries to resolve⎕OR s)

Namespace inverse  ⎕NS⍣¯1 
🔺  allows(names values)←⎕NS⍣¯1⊢ns (returns⎕OR s for ns/fns)

Unicode Convert  ⎕UCS 
🔵  scalar when monadic 
* 🔺 means new feature 🔶 means added valence 🔵 means expanded domain
APL dialects [edit]  

Maintained  APL+Win ∙ APL2 ∙ APL64 ∙ APL\iv ∙ Aplette ∙ April ∙ Codfns ∙ Dyalog APL ∙ dzaima/APL ∙ Extended Dyalog APL ∙ GNU APL ∙ KAP ∙ NARS2000 ∙ Pometo 
Historical  A Programming Language ∙ A+ (A) ∙ APL# ∙ APL\360 ∙ APL/700 ∙ APL\1130 ∙ APL\3000 ∙ APL.68000 ∙ APL*PLUS ∙ APL.jl ∙ APL.SV ∙ APLX ∙ Iverson notation ∙ IVSYS/7090 ∙ NARS ∙ ngn/apl ∙ openAPL ∙ Operators and Functions ∙ PAT ∙ Rowan ∙ SAX ∙ SHARP APL ∙ Rationalized APL ∙ VisualAPL (APLNext) ∙ VS APL ∙ York APL 
Derivatives  AHPL ∙ BQN ∙ CoSy ∙ ELI ∙ Glee ∙ I ∙ Ivy ∙ J ∙ Jelly ∙ Jellyfish ∙ K (Q, KDB+) ∙ Lang5 ∙ Nial ∙ RAD 
Overviews  Timeline of array languages ∙ Timeline of influential array languages ∙ Family tree of array languages 