NARS2000: Difference between revisions
(small typo) |
No edit summary |
||
Line 1: | Line 1: | ||
{{Infobox array language | {{Infobox array language | ||
| logo = [[File:Nars2000.png]] | | logo = [[File:Nars2000.png]] | ||
Line 32: | Line 33: | ||
=== Functions === | === Functions === | ||
One feature of NARS2000 is its heavy use of experimental primitive functions & operators. In the table below, symbols which are unknown or obscure in the APL world are linked to the NARS2000 wiki rather than the APL wiki. | |||
{| class=wikitable | {| class=wikitable | ||
Line 38: | Line 41: | ||
| <source lang=apl inline>⍸</source> || [[Indices]] || Array Lookup (high-rank [[Index-Of]]) | | <source lang=apl inline>⍸</source> || [[Indices]] || Array Lookup (high-rank [[Index-Of]]) | ||
|- | |- | ||
| <source lang=apl inline><</source> || [ | | <source lang=apl inline><</source> || [http://wiki.nars2000.org/index.php?title=Condense Condense] || [[Less Than]] | ||
|- | |- | ||
| <source lang=apl inline>></source> || [ | | <source lang=apl inline>></source> || [http://wiki.nars2000.org/index.php?title=Dilate Dilate] || [[Greater Than]] | ||
|- | |- | ||
| <source lang=apl inline>\</source> || || [[Expand]] | | <source lang=apl inline>\</source> || || [[Expand]] | ||
Line 54: | Line 57: | ||
| <source lang=apl inline>⊂</source> || || [[Partitioned Enclose]] | | <source lang=apl inline>⊂</source> || || [[Partitioned Enclose]] | ||
|- | |- | ||
| <source lang=apl inline>π</source> || [ | | <source lang=apl inline>π</source> || [http://wiki.nars2000.org/index.php?title=Primes Prime Factors] || [http://wiki.nars2000.org/index.php?title=Primes Number Theory] | ||
|- | |- | ||
| <source lang=apl inline>⍴</source> || [[Shape]] || [[Reshape]] | | <source lang=apl inline>⍴</source> || [[Shape]] || [[Reshape]] | ||
Line 60: | Line 63: | ||
| <source lang=apl inline>√</source> || [[Square Root]] || [[Root]] | | <source lang=apl inline>√</source> || [[Square Root]] || [[Root]] | ||
|- | |- | ||
| <source lang=apl inline>..</source> || || [ | | <source lang=apl inline>..</source> || || [http://wiki.nars2000.org/index.php?title=Sequence Sequence] | ||
|- | |- | ||
| <source lang=apl inline>⊆</source> || || [ | | <source lang=apl inline>⊆</source> || || [http://wiki.nars2000.org/index.php?title=Sets#subset Subset] | ||
|- | |- | ||
| <source lang=apl inline>⊇</source> || || [ | | <source lang=apl inline>⊇</source> || || [http://wiki.nars2000.org/index.php?title=Sets#superset Superset] | ||
|- | |- | ||
| <source lang=apl inline>§</source> || || [ | | <source lang=apl inline>§</source> || || [http://wiki.nars2000.org/index.php?title=Sets#symmetric_difference Symmetric Difference] | ||
|- | |- | ||
| <source lang=apl inline>~</source> || [[Not]] || [[Without]] | | <source lang=apl inline>~</source> || [[Not]] || [[Without]] | ||
|- | |||
| <source lang=apl inline>≤</source> || [http://wiki.nars2000.org/index.php?title=Ball_Arithmetic#Contract Contract] || [[Less Than or Equal]] | |||
|- | |||
| <source lang=apl inline>≥</source> || [http://wiki.nars2000.org/index.php?title=Ball_Arithmetic#Distract Distract] || [[Greater Than or Equal]] | |||
|} | |} | ||
=== Operators === | === Operators === | ||
{| class=wikitable | {| class=wikitable | ||
! Glyph !! Valence !! Monadic call !! Dyadic call | ! Glyph !! Valence !! Monadic call !! Dyadic call | ||
|- | |- | ||
| <source lang=apl inline>⍣</source> || Dyadic ||colspan=2| [ | | <source lang=apl inline>⍣</source> || Dyadic ||colspan=2| [http://wiki.nars2000.org/index.php?title=Power Power] | ||
|- | |- | ||
| <source lang=apl inline>⍨</source> || Monadic || | | <source lang=apl inline>⍨</source> || Monadic || [http://wiki.nars2000.org/index.php?title=Commute-Duplicate Duplicate] || [http://wiki.nars2000.org/index.php?title=Commute-Duplicate Commute] | ||
|- | |- | ||
| <source lang=apl inline>⍥</source> || Dyadic ||colspan=2| Composition ([[Over]]) | | <source lang=apl inline>⍥</source> || Dyadic ||colspan=2| Composition ([[Over]]) | ||
Line 90: | Line 95: | ||
| <source lang=apl inline>‼</source> || Monadic || [http://wiki.nars2000.org/index.php/Combinatorial Combinatorial] || | | <source lang=apl inline>‼</source> || Monadic || [http://wiki.nars2000.org/index.php/Combinatorial Combinatorial] || | ||
|- | |- | ||
| <source lang=apl inline>⍡</source> || Dyadic || || [ | | <source lang=apl inline>⍡</source> || Dyadic || || [http://wiki.nars2000.org/index.php?title=Convolution Convolution] | ||
|- | |- | ||
| <source lang=apl inline>.</source> || Dyadic || [ | | <source lang=apl inline>.</source> || Dyadic || [http://wiki.nars2000.org/index.php?title=Determinant_Operator Determinant] || [[Inner Product]] | ||
|- | |- | ||
| <source lang=apl inline>∂</source> || Monadic ||colspan=2| Numerical [http://wiki.nars2000.org/index.php/Derivative Derivative] | | <source lang=apl inline>∂</source> || Monadic ||colspan=2| Numerical (Partial) [http://wiki.nars2000.org/index.php/Derivative Derivative] | ||
|- | |- | ||
| <source lang=apl inline>∫</source> || Monadic ||colspan=2| Numerical [http://wiki.nars2000.org/index.php/Integral Integral] | |||
|- | |||
| <source lang=apl inline>⌻</source> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php/Matrix Matrix] | | <source lang=apl inline>⌻</source> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php/Matrix Matrix] | ||
|- | |- | ||
Line 102: | Line 109: | ||
| <source lang=apl inline>⊙</source> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php/Null Null] | | <source lang=apl inline>⊙</source> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php/Null Null] | ||
|- | |- | ||
| <source lang=apl inline>a∘/</source> || Special || || [ | | <source lang=apl inline>a∘/</source> || Special || || [http://wiki.nars2000.org/index.php?title=Compose#Mask Mask] | ||
|- | |- | ||
| <source lang=apl inline>a∘⌿</source> || Special || || [ | | <source lang=apl inline>a∘⌿</source> || Special || || [http://wiki.nars2000.org/index.php?title=Compose#Mask Mask] First | ||
|- | |- | ||
| <source lang=apl inline>a∘\</source> || Special || || [[Mesh]] | | <source lang=apl inline>a∘\</source> || Special || || [[Mesh]] | ||
Line 110: | Line 117: | ||
| <source lang=apl inline>a∘⍀</source> || Special || || [[Mesh]] First | | <source lang=apl inline>a∘⍀</source> || Special || || [[Mesh]] First | ||
|- | |- | ||
| <source lang=apl inline>⍠</source> || Dyadic ||colspan=2| [[ | | <source lang=apl inline>⍠</source> || Dyadic ||colspan=2| [http://wiki.nars2000.org/index.php?title=Variant Variant] | ||
|- | |||
| <source lang=apl inline>≈</source> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php?title=Ball_Arithmetic Ball Arithmetic] | |||
|} | |||
== Datatypes == | |||
Along with the Real numbers, NARS2000 supports the rest of the four [https://en.wikipedia.org/wiki/Hurwitz%27s_theorem_(composition_algebras) Normed Division Algebra] datatypes: Complex, Quaternion, and Octonion numbers, along with several Multi-Precision datatypes, and signed Infinities: | |||
{| class=wikitable | |||
! Notation !! Datatype | |||
|- | |||
| <source lang=apl inline>1i2</source> || [http://www.sudleyplace.com/APL/Hypercomplex%20Numbers%20in%20APL.pdf Complex] | |||
|- | |||
| <source lang=apl inline>1i2j3k4</source> || [http://www.sudleyplace.com/APL/Hypercomplex%20Numbers%20in%20APL.pdf Quaternion] | |||
|- | |||
| <source lang=apl inline>1i2j3k4l5ij6jk7kl8</source> || [http://www.sudleyplace.com/APL/Hypercomplex%20Numbers%20in%20APL.pdf Octonion] | |||
|- | |||
| <source lang=apl inline>2.2x</source> || [http://wiki.nars2000.org/index.php?title=Rational_and_VFP_Numbers Rational Numbers] | |||
|- | |||
| <source lang=apl inline>2.2v</source> || [http://wiki.nars2000.org/index.php?title=Rational_and_VFP_Numbers Variable-precision Floating Point Numbers] | |||
|- | |||
| <source lang=apl inline>2.2±</source> || [http://wiki.nars2000.org/index.php?title=Ball_Arithmetic Ball Arithmetic] | |||
|- | |||
| <source lang=apl inline>∞ and ¯∞</source> || [http://wiki.nars2000.org/index.php?title=Infinity Signed Infinities] | |||
|- | |||
| <source lang=apl inline>∅</source> || [http://wiki.nars2000.org/index.php?title=NaN Not-a-Number (NaN)] | |||
|} | |} | ||
Each of the 2, 4, or 8 coefficients of Hypercomplex numbers must all be the same Real number datatype (i.e., Boolean, Integer, Floating Point, Rational, Variable-precision Floating Point, or Ball Arithmetic), or else they will all be promoted to a single common Real number datatype. | |||
== External links == | == External links == |
Revision as of 22:22, 9 September 2022
NARS2000 is an open-source APL interpreter written by Bob Smith, a prominent APL developer and implementer from STSC in the 1970s and 1980s. NARS2000 contains advanced features and new datatypes and runs natively on Microsoft Windows, and other platforms under Wine. It is the spiritual successor of the first NARS (Nested Arrays Research System) which was designed and implemented in the early 1980s as a testbed for new ideas in APL, principally with nested arrays.
Language ideas include new functions, operators, datatypes, and many other extensions. The project is free open source software.
Primitives
The following list is incomplete.
Functions
One feature of NARS2000 is its heavy use of experimental primitive functions & operators. In the table below, symbols which are unknown or obscure in the APL world are linked to the NARS2000 wiki rather than the APL wiki.
Glyph | Monadic | Dyadic |
---|---|---|
⍸ |
Indices | Array Lookup (high-rank Index-Of) |
< |
Condense | Less Than |
> |
Dilate | Greater Than |
\ |
Expand | |
⍷ |
Find | |
⍳ |
Index Generator | Index Of |
⌹ |
Matrix Inverse | Matrix Divide |
≢ |
Tally | Mismatch |
⊂ |
Partitioned Enclose | |
π |
Prime Factors | Number Theory |
⍴ |
Shape | Reshape |
√ |
Square Root | Root |
.. |
Sequence | |
⊆ |
Subset | |
⊇ |
Superset | |
§ |
Symmetric Difference | |
~ |
Not | Without |
≤ |
Contract | Less Than or Equal |
≥ |
Distract | Greater Than or Equal |
Operators
Glyph | Valence | Monadic call | Dyadic call |
---|---|---|---|
⍣ |
Dyadic | Power | |
⍨ |
Monadic | Duplicate | Commute |
⍥ |
Dyadic | Composition (Over) | |
∘ |
Dyadic | Compose | |
⍤ |
Dyadic | Rank | |
‼ |
Monadic | Combinatorial | |
⍡ |
Dyadic | Convolution | |
. |
Dyadic | Determinant | Inner Product |
∂ |
Monadic | Numerical (Partial) Derivative | |
∫ |
Monadic | Numerical Integral | |
⌻ |
Monadic | Matrix | |
⍦ |
Monadic | Multisets | |
⊙ |
Monadic | Null | |
a∘/ |
Special | Mask | |
a∘⌿ |
Special | Mask First | |
a∘\ |
Special | Mesh | |
a∘⍀ |
Special | Mesh First | |
⍠ |
Dyadic | Variant | |
≈ |
Monadic | Ball Arithmetic |
Datatypes
Along with the Real numbers, NARS2000 supports the rest of the four Normed Division Algebra datatypes: Complex, Quaternion, and Octonion numbers, along with several Multi-Precision datatypes, and signed Infinities:
Notation | Datatype |
---|---|
1i2 |
Complex |
1i2j3k4 |
Quaternion |
1i2j3k4l5ij6jk7kl8 |
Octonion |
2.2x |
Rational Numbers |
2.2v |
Variable-precision Floating Point Numbers |
2.2± |
Ball Arithmetic |
∞ and ¯∞ |
Signed Infinities |
∅ |
Not-a-Number (NaN) |
Each of the 2, 4, or 8 coefficients of Hypercomplex numbers must all be the same Real number datatype (i.e., Boolean, Integer, Floating Point, Rational, Variable-precision Floating Point, or Ball Arithmetic), or else they will all be promoted to a single common Real number datatype.
External links
APL dialects [edit] | |
---|---|
Maintained | APL+Win ∙ APL2 ∙ APL64 ∙ APL\iv ∙ Aplette ∙ April ∙ Co-dfns ∙ Dyalog APL ∙ Dyalog APL Vision ∙ dzaima/APL ∙ GNU APL ∙ Kap ∙ NARS2000 ∙ Pometo ∙ TinyAPL |
Historical | A Programming Language ∙ A+ (A) ∙ APL# ∙ APL2C ∙ APL\360 ∙ APL/700 ∙ APL\1130 ∙ APL\3000 ∙ APL.68000 ∙ APL*PLUS ∙ APL.jl ∙ APL.SV ∙ APLX ∙ Extended Dyalog APL ∙ Iverson notation ∙ IVSYS/7090 ∙ NARS ∙ ngn/apl ∙ openAPL ∙ Operators and Functions ∙ PAT ∙ Rowan ∙ SAX ∙ SHARP APL ∙ Rationalized APL ∙ VisualAPL (APLNext) ∙ VS APL ∙ York APL |
Derivatives | AHPL ∙ BQN ∙ CoSy ∙ ELI ∙ Glee ∙ I ∙ Ivy ∙ J ∙ Jelly ∙ K (Goal, Klong, Q) ∙ KamilaLisp ∙ Lang5 ∙ Lil ∙ Nial ∙ RAD ∙ Uiua |
Overviews | Comparison of APL dialects ∙ Timeline of array languages ∙ Timeline of influential array languages ∙ Family tree of array languages |