3,038
edits
(Don't link to Sudley Place) |
m (→Operators: Mask has a page now) |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{Infobox array language | {{Infobox array language | ||
| logo = [[File:Nars2000.png]] | |||
| array model = [[nested array model|nested]] | | array model = [[nested array model|nested]] | ||
| index origin = 0 or 1 | | index origin = 0 or 1 | ||
Line 18: | Line 20: | ||
| file ext = .dws, .dse, .dcf, .dyalog, .dyapp, .apl, .apla, .aplf, .aplo, .apln, .aplc, .apli | | file ext = .dws, .dse, .dcf, .dyalog, .dyapp, .apl, .apla, .aplf, .aplo, .apln, .aplc, .apli | ||
| documentation = [http://wiki.nars2000.org/ NARS2000 Wiki] | | documentation = [http://wiki.nars2000.org/ NARS2000 Wiki] | ||
| influenced by = [[APL2]], [[J]], [[SHARP APL]], [[Dyalog APL]] | | influenced by = [[NARS]], [[APL2]], [[J]], [[SHARP APL]], [[Dyalog APL]] | ||
| influenced = [[Dyalog APL]] | | influenced = [[Dyalog APL]] | ||
}} | }} | ||
'''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 [[datatype]]s and runs natively on Microsoft Windows, and other platforms under Wine. It is the spiritual successor of the first | '''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 [[datatype]]s 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 | Language ideas include new functions, operators, datatypes, and many other extensions. The project is free open source software. | ||
== Primitives == | == Primitives == | ||
Line 31: | 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 | ||
! Glyph !! Monadic !! Dyadic | ! Glyph !! Monadic !! Dyadic | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍸</syntaxhighlight> || [[Indices]] || Array Lookup (high-rank [[Index-Of]]) | ||
|- | |||
| <syntaxhighlight lang=apl inline><</syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Condense Condense] || [[Less Than]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>></syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Dilate Dilate] || [[Greater Than]] | |||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>\</syntaxhighlight> || || [[Expand]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍷</syntaxhighlight> || || [[Find]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> || [[Index Generator]] || [[Index Of]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> || [[Matrix Inverse]] || [[Matrix Divide]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≢</syntaxhighlight> || [[Tally]] || [[Not Match|Mismatch]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> || || [[Partitioned Enclose]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>π</syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Primes Prime Factors] || [http://wiki.nars2000.org/index.php?title=Primes Number Theory] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> || [[Shape]] || [[Reshape]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>√</syntaxhighlight> || [[Square Root]] || [[Root]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>..</syntaxhighlight> || || [[Range|Sequence]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊆</syntaxhighlight> || || [http://wiki.nars2000.org/index.php?title=Sets#subset Subset] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊇</syntaxhighlight> || || [http://wiki.nars2000.org/index.php?title=Sets#superset Superset] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>§</syntaxhighlight> || || [http://wiki.nars2000.org/index.php?title=Sets#symmetric_difference Symmetric Difference] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>~</syntaxhighlight> || [[Not]] || [[Without]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≤</syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Ball_Arithmetic#Contract Contract] || [[Less Than or Equal]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≥</syntaxhighlight> || [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 | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍣</syntaxhighlight> || Dyadic ||colspan=2| [http://wiki.nars2000.org/index.php?title=Power Power] | ||
|- | |||
| <syntaxhighlight lang=apl inline>⍨</syntaxhighlight> || Monadic || [http://wiki.nars2000.org/index.php?title=Commute-Duplicate Duplicate] || [http://wiki.nars2000.org/index.php?title=Commute-Duplicate Commute] | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍥</syntaxhighlight> || Dyadic ||colspan=2| Composition ([[Over]]) | |||
|- | |||
| <syntaxhighlight lang=apl inline>∘</syntaxhighlight> || Dyadic ||colspan=2| [[Compose]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> || Dyadic ||colspan=2| [[Rank operator|Rank]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>‼</syntaxhighlight> || Monadic || [http://wiki.nars2000.org/index.php/Combinatorial Combinatorial] || | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍡</syntaxhighlight> || Dyadic || || [http://wiki.nars2000.org/index.php?title=Convolution Convolution] | |||
|- | |||
| <syntaxhighlight lang=apl inline>.</syntaxhighlight> || Dyadic || [[Determinant]] || [[Inner Product]] | |||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>∂</syntaxhighlight> || Monadic ||colspan=2| Numerical (Partial) [http://wiki.nars2000.org/index.php/Derivative Derivative] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>∫</syntaxhighlight> || Monadic ||colspan=2| Numerical [http://wiki.nars2000.org/index.php/Integral Integral] | ||
|- | |||
| <syntaxhighlight lang=apl inline>⌻</syntaxhighlight> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php/Matrix Matrix] | |||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍦</syntaxhighlight> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php/Multisets Multisets] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊙</syntaxhighlight> || Monadic ||colspan=2| [http://wiki.nars2000.org/index.php/Null Null] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>a∘/</syntaxhighlight> || Special || || [[Mask]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>a∘⌿</syntaxhighlight> || Special || || [[Mask]] First | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>a∘\</syntaxhighlight> || Special || || [[Mesh]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>a∘⍀</syntaxhighlight> || Special || || [[Mesh]] First | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍠</syntaxhighlight> || Dyadic ||colspan=2| [http://wiki.nars2000.org/index.php?title=Variant Variant] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≈</syntaxhighlight> || 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 | |||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>1i2</syntaxhighlight> || [http://www.sudleyplace.com/APL/Hypercomplex%20Numbers%20in%20APL.pdf Complex] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>1i2j3k4</syntaxhighlight> || [http://www.sudleyplace.com/APL/Hypercomplex%20Numbers%20in%20APL.pdf Quaternion] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>1i2j3k4l5ij6jk7kl8</syntaxhighlight> || [http://www.sudleyplace.com/APL/Hypercomplex%20Numbers%20in%20APL.pdf Octonion] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>2.2x</syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Rational_and_VFP_Numbers Rational Numbers] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>2.2v</syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Rational_and_VFP_Numbers Variable-precision Floating Point Numbers] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>2.2±</syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Ball_Arithmetic Ball Arithmetic] | ||
|- | |||
| <syntaxhighlight lang=apl inline>∞ and ¯∞</syntaxhighlight> || [http://wiki.nars2000.org/index.php?title=Infinity Signed Infinities] | |||
|- | |||
| <syntaxhighlight lang=apl inline>∅</syntaxhighlight> || [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. | |||
== Syntax == | |||
* [http://wiki.nars2000.org/index.php?title=Hyperators Hyperators] | |||
== External links == | == External links == |