# Extended Dyalog APL: Difference between revisions

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.

## Influence

Many of the extensions have been adopted into dzaima/APL, while Dyalog APL added Constant (`⍨`) and introduced non-experimental case conversion as a `⎕C` function rather than the proposed operator. Dyalog is also considering adding Reverse Compose, From, and Depth.

## 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's`to⍤1` Epsilon Underbar `⍷` 🔶 monadic is Type`∊`with`⎕ML←0` Equals `=` 🔶 with TAO; monad: is-type Greater Than `>` 🔶 with TAO; monad: is-strictly-negative/is-visible Greater Than Or Equal To `≥` 🔶 with TAO; monad: is non-positive/is-not-control-character 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/non-Booleans Iota Underbar Inverse `⍸⍣¯1` 🔵 given`r`, finds`n`so that`r≡⍸n` Jot Diaeresis `⍤` 🔵 allows constant left operand, Atop with function right operand Jot Underbar `⍛` 🔺 reverse composition`X 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: nub-sieve; dyad: count-in Left Shoe With Axis `⊂[k]` 🔵 as`⊂`, but called with left operand Less Than `<` 🔶 with TAO; monad: is-strictly-positive/is-control-character Less Than Or Equal To `≤` 🔶 with TAO ; monad: is-non-negative/is-invisible 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: is-non-type Percent `%` 🔺 `f%`and`A%`: probability-logical function (mapping arrays) Quad Diamond `⌺` 🔶 auto-extended`⍵⍵`, allows small`⍵`, optional edge spec(s) (0:Zero; 1:Repl; 2:Rev; 3:Mirror; 4:Wrap; -:Twist) with masks as operand's`⍺` Question Mark `?` 🔵 `⍺?¯⍵`as norm dist stddev `⍵`and optional mean`⍺←0` 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 non-scalar 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=non-prime?, 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 self-classify; 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 case-insensitively,`array ⎕C`case-folds Error Message `⎕EM` 🔺 Self-inverse`⎕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 
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLdzaima/APLExtended Dyalog APLGNU APLKAPNARS2000Pometo
Historical A Programming LanguageA+ (A) ∙ APL#APL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyJellyfishK (Q, KDB+) ∙ Lang5NialRAD
Overviews Timeline of array languagesTimeline of influential array languagesFamily tree of array languages