NARS: Difference between revisions

Jump to navigation Jump to search
4,487 bytes added ,  22:11, 10 September 2022
m
Text replacement - "</source>" to "</syntaxhighlight>"
(Created page with "{{Infobox array language | array model = nested | index origin = 0 or 1 | function styles = defined functions | nu...")
 
m (Text replacement - "</source>" to "</syntaxhighlight>")
(10 intermediate revisions by 2 users not shown)
Line 2: Line 2:
| array model              = [[nested array model|nested]]
| array model              = [[nested array model|nested]]
| index origin            = 0 or 1
| index origin            = 0 or 1
| function styles          = [[defined function]]s
| function styles          = [[defined function]]s, [[direct definition (NARS)]]
| numeric types            =  
| numeric types            =  
| unicode support          = no
| unicode support          = no
Line 12: Line 12:
| operating systems        =  
| operating systems        =  
| documentation            = [http://www.sudleyplace.com/APL/Nested%20Arrays%20System.pdf Reference manual]
| documentation            = [http://www.sudleyplace.com/APL/Nested%20Arrays%20System.pdf Reference manual]
| influenced by            = [[APL.SV]], [[Iverson notation]]
| influenced by            = [[APL*PLUS]], [[Operators and Functions]], [[Iverson notation]]
| influenced              = [[Dyalog APL]], [[APL2]], [[NARS2000]]
| influenced              = [[Dyalog APL]], [[APL2]], [[NARS2000]]
}}
}}


[[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> It was heavily influenced by [[Ken Iverson]]'s 1978 paper [[Operators and Functions]], and as a result features the first implementations of many primitives that were later added to [[SHARP APL]] and [[J]] under Iverson's direct supervision.
 
== Primitives ==
 
NARS was an extension of [[APL*PLUS]], which used the [[APL.SV]] primitive set, except for [[Execute]] (<syntaxhighlight lang=apl inline>⍎</syntaxhighlight>). Only new primitives are shown here, with existing cases in parentheses.
 
=== Functions ===
 
{|class=wikitable
! Glyph                              !! Monadic              !! Dyadic
|-
| <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> || [[Enclose]]          || [[Partitioned Enclose]]
|-
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || Disclose or [[First]] || [[Pick]]
|-
| <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> || [[Type]]              ||
|-
| <syntaxhighlight lang=apl inline>≡</syntaxhighlight> || [[Simple (NARS)]]    || [[Equivalent]]
|-
| <syntaxhighlight lang=apl inline>≢</syntaxhighlight> || [[Not-Simple]]        || [[Inequivalent]]
|-
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight> || [[Split]]            || ([[Drop]])
|-
| <syntaxhighlight lang=apl inline>↑</syntaxhighlight> || [[Mix]]              || ([[Take]])
|-
| <syntaxhighlight lang=apl inline>∪</syntaxhighlight> || [[Unique]]            || [[Union]]
|-
| <syntaxhighlight lang=apl inline>~</syntaxhighlight> ||                      || [[Set Difference]]
|-
| <syntaxhighlight lang=apl inline>∩</syntaxhighlight> ||                      || [[Intersection]]
|-
| <syntaxhighlight lang=apl inline>⍪</syntaxhighlight> ||                      || [[Catenate]] along the First Dimension
|}
 
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
|-
| <syntaxhighlight lang=apl inline>f/</syntaxhighlight>  || ([[Reduction]])            || Dyadic Reduction ([[Windowed Reduction]])
|-
| <syntaxhighlight lang=apl inline>f\</syntaxhighlight>  || ([[Scan]])                || Dyadic Scan
|-
| <syntaxhighlight lang=apl inline>f¨</syntaxhighlight>  ||colspan=2| [[Each]]
|-
| <syntaxhighlight lang=apl inline>f⍨</syntaxhighlight>  ||                            || [[Commute]]
|-
| <syntaxhighlight lang=apl inline>f⍣B</syntaxhighlight>  || [[Power (operator)|Power]] ||
|-
| <syntaxhighlight lang=apl inline>f⍣∘</syntaxhighlight>  || [[Power Limit]]            ||
|-
| <syntaxhighlight lang=apl inline>f⍣∘</syntaxhighlight>  || [[Power Series (operator)|Power Series]] ||
|-
| <syntaxhighlight lang=apl inline>f∘g</syntaxhighlight>  ||colspan=2| Composition ([[Beside]])
|-
| <syntaxhighlight lang=apl inline>A∘g</syntaxhighlight>  ||rowspan=2| Composition ([[Bind]])  ||
|-
| <syntaxhighlight lang=apl inline>f∘B</syntaxhighlight>  ||
|-
| <syntaxhighlight lang=apl inline>f⍢g</syntaxhighlight>  ||colspan=2| [[Dual]]
|-
| <syntaxhighlight lang=apl inline>∘.g</syntaxhighlight>  || Function Table            || ([[Outer Product]])
|-
| <syntaxhighlight lang=apl inline>A⍡</syntaxhighlight>  ||                            || [[Convolution operator]]
|-
| <syntaxhighlight lang=apl inline>A∘/</syntaxhighlight> ||                            || [[Mask]]
|-
| <syntaxhighlight lang=apl inline>A∘\</syntaxhighlight> ||                            || [[Mesh]]
|-
!colspan=3| [[Direct definition (NARS)|Direct definition]]
|-
| <syntaxhighlight lang=apl inline>∘∇B</syntaxhighlight> || [[Monadic]]                ||
|-
| <syntaxhighlight lang=apl inline>A∇∘</syntaxhighlight> ||                            || [[Dyadic]]
|-
| <syntaxhighlight lang=apl inline>A∇B</syntaxhighlight> ||colspan=2| [[Ambivalent]]
|}
 
=== Other functionality ===
 
* [[Stranding]] and [[stranded assignment]] syntax were added.
* The primitive array [[Zilde]] was introduced.
* The assignment arrow <syntaxhighlight lang=apl inline>←</syntaxhighlight> 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 ==

Navigation menu