# NARS

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

STSC's APL*PLUS Nested Arrays System (acronymized NARS, from "Nested Array Research System") was the first commercial 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.[2] 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 (`⍎`). Only new primitives are shown here, with existing cases in parentheses.

### Functions

`⊂` Enclose Partitioned Enclose
`⊃` Disclose or First Pick
`⊤` Type
`≡` Simple (NARS) Equivalent
`≢` Not-Simple Inequivalent
`↓` Split (Drop)
`↑` Mix (Take)
`∪` Unique Union
`~` Set Difference
`∩` Intersection
`⍪` 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 elements).

### Operators

`f/` (Reduction) Dyadic Reduction (Windowed Reduction)
`f\` (Scan) Dyadic Scan
`f¨` Each
`f⍨` Commute
`f⍣B` Power
`f⍣∘` Power Limit
`f⍣∘` Power Series
`f∘g` Composition (Beside)
`A∘g` Composition (Bind)
`f∘B`
`f⍢g` Dual
`∘.g` Function Table (Outer Product)
`A⍡` Convolution operator
`A∘/` Mask
`A∘\` Mesh
Direct definition
`∘∇B` Monadic
`A∇∘` Dyadic
`A∇B` Ambivalent

## References

1. Carl M. Cheney. APL*PLUS Nested Arrays System (reference manual). STSC. 1981.

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