Extended Dyalog APL: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Add note explaining that the Extended Dyalog is archived and cannot be easily used in Dyalog APL.)
No edit summary
Line 16: Line 16:
| run online              = [https://tio.run/#apl-dyalog-extended TIO]
| run online              = [https://tio.run/#apl-dyalog-extended TIO]
}}
}}
'''Extended Dyalog APL''' features extended domains of existing primitives/quad-names and adds a few new ones to [[Dyalog APL]].
'''Extended Dyalog APL''' features extended domains of existing [[primitive]]s and [[quad name]]s and adds a few new ones to [[Dyalog APL]].
It was an experimental project that is no longer maintained. Quoting from project README.md:
It was an experimental project that is no longer maintained. Quoting from project README.md:
<blockquote>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.</blockquote>


''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:
{| class=wikitable
| Name || Glyph || Type* || Extension
|-
| Back Slash || <source lang=apl inline>\</source> || 🔶 || <source lang=apl inline>∘.f</source>when dyadic, allows short and/or multiple left args
|-
| Back Slash Bar || <source lang=apl inline>⍀</source> || 🔶 || <source lang=apl inline>⊢∘f</source>when dyadic, allows short and/or multiple left args
|-
| Bullet || <source lang=apl inline>∙</source> || 🔺 || Inner product and Alternant
|-
| Circle Diaeresis || <source lang=apl inline>⍥</source> || 🔺 || Over and Depth
|-
| Circle Jot || <source lang=apl inline>⌾</source> || 🔺 || Complex/Imaginary
|-
| Del Diaeresis || <source lang=apl inline>⍢</source> || 🔺 || Under (a.k.a. Dual)
|-
| Del Tilde || <source lang=apl inline>⍫</source> || 🔺 || Obverse;<source lang=apl inline>⍺⍺</source>but with inverse<source lang=apl inline>⍵⍵</source>
|-
| Diaeresis || <source lang=apl inline>¨</source> || 🔵 || allows constant operand
|-
| Divide || <source lang=apl inline>÷</source> || 🔵 || monadic converts letters to title case when possible
|-
| Dollar Sign || <source lang=apl inline>$</source> || 🔺 || string enhancement <code>${1}</code>:<source lang=apl inline>1⊃⍺</source>, <code>${expr}</code>:<source lang=apl inline>⍎expr</source>,<source lang=apl inline>\n</source>:JSON
|-
| Down Arrow || <source lang=apl inline>↓</source> || 🔵 || allows long<source lang=apl inline>⍺</source>
|-
| Down Shoe || <source lang=apl inline>∪</source> || 🔵 || allows rank>1
|-
| Downstile || <source lang=apl inline>⌊</source> || 🔵 || monadic lowercases letters
|-
| Down Tack || <source lang=apl inline>⊤</source> || 🔶 || 2s as default left argument
|-
| Ellipsis || <source lang=apl inline>…</source> || 🔺 || fill sequence gaps ([[dfns workspace]]'s<source lang=apl inline>to⍤1</source>
|-
| Epsilon Underbar || <source lang=apl inline>⍷</source> || 🔶 || monadic is Type<source lang=apl inline>∊</source>with<source lang=apl inline>⎕ML←0</source>
|-
| Equals || <source lang=apl inline>=</source> || 🔶 || with [[TAO]]; monad: is-type
|-
| Greater Than || <source lang=apl inline>></source> || 🔶 || with TAO; monad: is-strictly-negative/is-visible
|-
| Greater Than Or Equal To || <source lang=apl inline>≥</source> || 🔶 || with TAO; monad: is non-positive/is-not-control-character
|-
| house || <source lang=apl inline>⌂</source> || 🔺 || prefix for contents of [[dfns workspace]]
|-
| infinity || <source lang=apl inline>∞</source> || 🔺 || largest integer (for use with<source lang=apl inline>⍤</source>and<source lang=apl inline>⍣</source>)
|-
| Iota || <source lang=apl inline>⍳</source> || 🔵 || Unicode version of [[dfns workspace]]'s <source lang=apl inline>iotag</source>
|-
| Iota Underbar || <source lang=apl inline>⍸</source> || 🔵 || allows duplicates/non-Booleans
|-
| Iota Underbar Inverse || <source lang=apl inline>⍸⍣¯1</source> || 🔵 || given<source lang=apl inline>r</source>, finds<source lang=apl inline>n</source>so that<source lang=apl inline>r≡⍸n</source>
|-
| Jot Diaeresis || <source lang=apl inline>⍤</source> || 🔵 || allows constant left operand, Atop with function right operand
|-
| Jot Underbar || <source lang=apl inline>⍛</source> || 🔺 || reverse composition<source lang=apl inline>X f⍛g Y</source>is<source lang=apl inline>(f X) g Y</source>
|-
| Left Shoe || <source lang=apl inline>⊂</source> || 🔵 || allows partitioning along multiple trailing axes, with short <source lang=apl inline>⍺</source>s, and inserting/appending empty partitions
|-
| Left Shoe Stile || <source lang=apl inline>⍧</source> || 🔺 || monad: nub-sieve; dyad: count-in
|-
| Left Shoe With Axis || <source lang=apl inline>⊂[k]</source> || 🔵 || as<source lang=apl inline>⊂</source>, but called with left operand
|-
| Less Than || <source lang=apl inline><</source> || 🔶 || with TAO; monad: is-strictly-positive/is-control-character
|-
| Less Than Or Equal To || <source lang=apl inline>≤</source> || 🔶 || with TAO ; monad: is-non-negative/is-invisible
|-
| Minus || <source lang=apl inline>-</source> || 🔵 || monadic flips letter case
|-
| macron || <source lang=apl inline>¯</source> || 🔵 || as prefix to name or primitive means its inverse
|-
| negative Infinity || <source lang=apl inline>¯∞</source> || 🔺 || smallest integer (for use with<source lang=apl inline>⍣</source>)
|-
| Nand || <source lang=apl inline>⍲</source> || 🔶 || monad: not all equal to type
|-
| Nor || <source lang=apl inline>⍱</source> || 🔶 || monad: not any equal to type
|-
| Not Equal To || <source lang=apl inline>≠</source> || 🔶 || with TAO; monad: is-non-type
|-
| Percent || <source lang=apl inline>%</source> || 🔺 || <source lang=apl inline>f%</source>and<source lang=apl inline>A%</source>: probability-logical function (mapping arrays)
|-
| Quad Diamond || <source lang=apl inline>⌺</source> || 🔶 || auto-extended<source lang=apl inline>⍵⍵</source>, allows small<source lang=apl inline>⍵</source>, optional edge spec(s) (0:Zero; 1:Repl; 2:Rev; 3:Mirror; 4:Wrap; -:Twist) with masks as operand's<source lang=apl inline>⍺</source>
|-
| Question Mark || <source lang=apl inline>?</source> || 🔵 || <source lang=apl inline>⍺?¯⍵</source>as norm dist stddev<source lang=apl inline>⍵</source>and optional mean<source lang=apl inline>⍺←0</source>|
|-
| Rho || <source lang=apl inline>⍴</source> || 🔵 || allows omitting one dimension length with<source lang=apl inline>¯1</source>
|-
| Right Shoe Underbar || <source lang=apl inline>⊇</source> || 🔺 || monadic discloses if scalar, dyadic indexes sanely
|-
| Right Shoe Underbar With Axis || <source lang=apl inline>⊇[k]</source> || 🔺 || as above, but called with left operand
|-
| Root || <source lang=apl inline>√</source> || 🔺 || (Square) Root
|-
| Semicolon Underbar || <source lang=apl inline>⍮</source> || 🔺 || (Half) Pair; use<source lang=apl inline>↑⍤⍮</source>to add axis
|-
| Slash || <source lang=apl inline>/</source> || 🔵 || allows short and/or multiple left args
|-
| Slash Bar || <source lang=apl inline>⌿</source> || 🔵 || allows short and/or multiple left args
|-
| Star Diaeresis || <source lang=apl inline>⍣</source> || 🔵 || allows non-scalar right operand incl.<source lang=apl inline>∞</source>and<source lang=apl inline>¯∞</source>and array left operand
|-
| Stile || <source lang=apl inline>|</source> || 🔵 || monadic normalises letters to lowercase (upper then lower)
|-
| Stile Tilde || <source lang=apl inline>⍭</source> || 🔺 || monadic is factors; dyadic depends on<source lang=apl inline>⍺</source>: 0=non-prime?, 1=prime?, ¯1=primes less than<source lang=apl inline>⍵</source>, ¯2=<source lang=apl inline>⍵</source>th prime, 4=next prime, ¯4=prev prime
|-
| Tilde || <source lang=apl inline>~</source> || 🔵 || monadic allows probabilities, dyadic allows rank>1
|-
| Tilde Diaeresis || <source lang=apl inline>⍨</source> || 🔵 || allows constant operand
|-
| Times || <source lang=apl inline>×</source> || 🔵 || set/query letter case (lower:<source lang=apl inline>¯1</source>, title:<source lang=apl inline>0</source>, upper:<source lang=apl inline>1</source>)
|-
| Up Arrow || <source lang=apl inline>↑</source> || 🔵 || allows long<source lang=apl inline>⍺</source>
|-
| Up Shoe || <source lang=apl inline>∩</source> || 🔶 || monadic is self-classify; dyadic allows rank>1
|-
| Upstile || <source lang=apl inline>⌈</source> || 🔵 || monadic uppercases letters
|-
| Up Tack || <source lang=apl inline>⊥</source> || 🔶 || 2 as default left argument
|-
| Vel || <source lang=apl inline>∨</source> || 🔶 || monadic is Descending Sort
|-
| Wedge || <source lang=apl inline>∧</source> || 🔶 || monadic is Ascending Sort
|-
| Case Convert || <source lang=apl inline>⎕C</source> || 🔺 || <source lang=apl inline>fn ⎕C</source>applies case-insensitively,<source lang=apl inline>array ⎕C</source>case-folds
|-
| Error Message || <source lang=apl inline>⎕EM</source> || 🔺 || Self-inverse<source lang=apl inline>⎕EM</source>
|-
| Namespace || <source lang=apl inline>⎕NS</source> || 🔵 || allows<source lang=apl inline>⎕NS names values</source>(tries to resolve<source lang=apl inline>⎕OR</source>s)
|-
| Namespace inverse || <source lang=apl inline>⎕NS⍣¯1</source> || 🔺 || allows<source lang=apl inline>(names values)←⎕NS⍣¯1⊢ns</source>(returns<source lang=apl inline>⎕OR</source>s for ns/fns)
|-
| Unicode Convert || <source lang=apl inline>⎕UCS</source> || 🔵 || scalar when monadic
|}
<nowiki>*</nowiki> 🔺 means new feature 🔶 means added valence 🔵 means expanded domain


{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]]
{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]]

Revision as of 16:14, 9 August 2022

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 \ 🔶 ∘.fwhen dyadic, allows short and/or multiple left args
Back Slash Bar 🔶 fwhen 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'sto1
Epsilon Underbar 🔶 monadic is Typewith⎕ML0
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 withand)
Iota 🔵 Unicode version of dfns workspace's iotag
Iota Underbar 🔵 allows duplicates/non-Booleans
Iota Underbar Inverse ¯1 🔵 givenr, findsnso thatr≡⍸n
Jot Diaeresis 🔵 allows constant left operand, Atop with function right operand
Jot Underbar 🔺 reverse compositionX fg Yis(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%andA%: 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 ? 🔵
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; useto 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 ⎕Capplies case-insensitively,array ⎕Ccase-folds
Error Message ⎕EM 🔺 Self-inverse⎕EM
Namespace ⎕NS 🔵 allows⎕NS names values(tries to resolve⎕ORs)
Namespace inverse ⎕NS¯1 🔺 allows(names values)⎕NS¯1ns(returns⎕ORs for ns/fns)
Unicode Convert ⎕UCS 🔵 scalar when monadic

* 🔺 means new feature 🔶 means added valence 🔵 means expanded domain


APL dialects [edit]
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