Extended Dyalog APL: Difference between revisions

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]]