3,038
edits
No edit summary |
(Tables of new functionality) |
||
Line 17: | Line 17: | ||
[[STSC]]'s '''APL*PLUS Nested Arrays System''' (acronymized '''NARS''', from "Nested Array Research System") was the first commercial [[Nested array model|nested]] APL implementation. Drawing on work by [[Jim Brown]], [[Trenchard More]], and development manager [[Bob Smith]], NARS introduced a new set of functions for working with arrays that contain arrays, as well as many new operators such as [[Power (operator)|Power]].<ref name="manual">Carl M. Cheney. ''[http://www.sudleyplace.com/APL/Nested%20Arrays%20System.pdf APL*PLUS Nested Arrays System]'' (reference manual). [[STSC]]. 1981.</ref> | [[STSC]]'s '''APL*PLUS Nested Arrays System''' (acronymized '''NARS''', from "Nested Array Research System") was the first commercial [[Nested array model|nested]] APL implementation. Drawing on work by [[Jim Brown]], [[Trenchard More]], and development manager [[Bob Smith]], NARS introduced a new set of functions for working with arrays that contain arrays, as well as many new operators such as [[Power (operator)|Power]].<ref name="manual">Carl M. Cheney. ''[http://www.sudleyplace.com/APL/Nested%20Arrays%20System.pdf APL*PLUS Nested Arrays System]'' (reference manual). [[STSC]]. 1981.</ref> | ||
== Primitives == | |||
NARS was an extension of [[APL*PLUS]], which used the [[APL.SV]] primitive set, except for [[Execute]] (<source lang=apl inline>⍎</source>). Only new primitives are shown here, with existing cases in parentheses. | |||
=== Functions === | |||
{|class=wikitable | |||
! Glyph !! Monadic !! Dyadic | |||
|- | |||
| <source lang=apl inline>⊂</source> || [[Enclose]] || [[Partitioned Enclose]] | |||
|- | |||
| <source lang=apl inline>⊃</source> || Disclose or [[First]] || [[Pick]] | |||
|- | |||
| <source lang=apl inline>⊤</source> || [[Type]] || | |||
|- | |||
| <source lang=apl inline>∩</source> || || [[Intersection]] | |||
|- | |||
| <source lang=apl inline>∪</source> || [[Unique]] || [[Union]] | |||
|- | |||
| <source lang=apl inline>~</source> || || [[Set Difference]] | |||
|- | |||
| <source lang=apl inline>⍪</source> || || [[Catenate]] along the First Dimension | |||
|- | |||
| <source lang=apl inline>≡</source> || [[Simple (NARS)]] || [[Equivalent]] | |||
|- | |||
| <source lang=apl inline>≢</source> || [[Not-Simple]] || [[Inequivalent]] | |||
|- | |||
| <source lang=apl inline>↓</source> || [[Split]] || ([[Drop]]) | |||
|- | |||
| <source lang=apl inline>↑</source> || [[Mix]] || ([[Take]]) | |||
|} | |||
Additionally, [[Index Generator]] was extended to allow a [[vector]] argument, [[Replicate]] and [[Expand]] were extended to allow integer left arguments, and [[Reshape]] was extended to allow an [[empty]] right argument (using [[fill element]]s). | |||
=== Operators === | |||
{|class=wikitable | |||
! Syntax !! Monadic call !! Dyadic call | |||
|- | |||
| <source lang=apl inline>f/</source> || ([[Reduction]]) || Dyadic Reduction ([[Windowed Reduction]]) | |||
|- | |||
| <source lang=apl inline>f\</source> || ([[Scan]]) || Dyadic Scan | |||
|- | |||
| <source lang=apl inline>f¨</source> ||colspan=2| [[Each]] | |||
|- | |||
| <source lang=apl inline>f⍨</source> || || [[Commute]] | |||
|- | |||
| <source lang=apl inline>f⍣B</source> || [[Power (operator)|Power]] || | |||
|- | |||
| <source lang=apl inline>f⍣∘</source> || [[Power Limit]] || | |||
|- | |||
| <source lang=apl inline>f⍣∘</source> || [[Power Series (operator)|Power Series]] || | |||
|- | |||
| <source lang=apl inline>f∘g</source> ||colspan=2| Composition ([[Beside]]) | |||
|- | |||
| <source lang=apl inline>A∘g</source> ||rowspan=2| Composition ([[Bind]]) || | |||
|- | |||
| <source lang=apl inline>f∘B</source> || | |||
|- | |||
| <source lang=apl inline>f⍢g</source> ||colspan=2| [[Dual]] | |||
|- | |||
| <source lang=apl inline>A⍡</source> || || [[Convolution operator]] | |||
|- | |||
| <source lang=apl inline>A∘/</source> || || [[Mask]] | |||
|- | |||
| <source lang=apl inline>A∘\</source> || || [[Mesh]] | |||
|- | |||
!colspan=3| [[Direct definition (NARS)|Direct definition]] | |||
|- | |||
| <source lang=apl inline>∘∇B</source> || [[Monadic]] || | |||
|- | |||
| <source lang=apl inline>A∇∘</source> || || [[Dyadic]] | |||
|- | |||
| <source lang=apl inline>A∇B</source> ||colspan=2| [[Ambivalent]] | |||
|} | |||
The [[Outer Product]] operator was renamed "Function Table". | |||
=== Other functionality === | |||
* [[Stranding]] and [[stranded assignment]] syntax were added. | |||
* The primitive array [[Zilde]] was introduced. | |||
* The assignment arrow <source lang=apl inline>←</source> with nothing to the left was used to indicate [[Sink]], which prevented display of a value. | |||
* [[Defined function]]s were extended to allow an ambivalent case. | |||
* [[Choose indexing]] was added. | |||
== References == | == References == |