Language Features
From NARS2000
Revision as of 12:26, 15 April 2018 by Sudleyplace (Talk  contribs)
At the moment, the following sections describe only those language features that are New or Enhanced relative to the Extended APL Standard, or that deserve special comment.
Contents 
Syntax
 Strand Assignment: (A_{1} A_{2} ... A_{n})←R
 Modify Assignment: Af←R
 Modify Strand Assignment: (A_{1} A_{2} ... A_{n})f←R
 Function/Operator Assignment: A←f, A←op1, A←op2
 Sink: ←R
 Point Notation:
 Base — 16b10FFFF is a shorthand for 16⊥1 0 15 15 15 15 and 10b45v is a shorthand for 10⊥4 5 31
 Euler — 2x3 is a shorthand for 2e^{3} or 2×(*1)*3 where e is Euler's Number (2.718281828459045...)
 Pi — 2p3 is a shorthand for 2π^{3} or 2×(○1)*3 where π is Archimedes' constant (3.141592653589793...)
 Gamma — 2g3 is a shorthand for 2γ^{3} where γ is EulerMascheroni's Constant (0.5772156649015329...)
 Hypercomplex — 2J3, 2i3 (both equal to 2+3×√¯1), 2ad3 (Angle in Degrees), 2ar3 (Angle in Radians), or 2au3 (Angle in Unit Normalized) for a Complex number, 1i2j3k4 for a Quaternion number, and 1i2j3k4l5ij6jk7kl8 for an Octonion number.
 Rational — 2r3 is a shorthand for 2÷3 as a MultiplePrecision Integer/Rational number.
 VariablePrecision Floating — 2.3v is a shorthand for 2.3 as a MultiplePrecision Floating Point number.
 Trains: e.g., avg←(+⌿ ÷ ≢) applies the functions to its argument(s) in a particular way (in this case, to compute the average of a numeric scalar or vector).
 Anonymous Functions/Operators: multiline grouping of one or more statements all enclosed in braces such as {(+⌿⍵)÷≢⍵}.
Primitive functions
 Array Lookup: L⍸R
 Condense: <[X] R
 Dilate: >[X] R
 Expand: L\[X] R
 Find: L⍷R
 Index Generator: ⍳R
 Index Of: L⍳R
 Indexing: R[L], R[L]←A, R[L]f←A, L⌷R, L⍉R, L⊃R
 Indices: ⍸R
 Matrix Inverse/Divide: ⌹R, L⌹R
 Mismatch: L≢R
 Partitioned Enclose: L⊂[X] R
 Primes: πR and LπR
 Reshape: L⍴R
 Root: √R and L√[X] R
 Sequence: L..R
 Sets: L§R, L⊆R, L⊇R
 Tally: ≢R
 Without: L~R
Primitive operators
 Axis: f[X], f op1[X], f op2[X]g
 Combinatorial: a‼R (monadic derived function)
 Commute: L f⍨ R ←→ R f L (dyadic derived function)
 Composition: f⍥g
 Compose: f∘g, f∘R, L∘g
 Convolution: f⍡g (dyadic derived function)
 Determinant: f.g (monadic derived function)
 Duplicate: f⍨ R ←→ R f R (monadic derived function)
 Matrix: f⌻R, L f⌻R, ∘⌻R
 Multisets: f⍦
 Null: f⊙
 Rank: f⍤[X] Y
 Variant: f⍠V
Datatypes
 Infinity: ∞ and ¯∞
 Arithmetic Progression Arrays: 2 3 4⍴⍳24
 Unicode Characters
 Array Predicates
 Rational Numbers: 1r3 and 12345x
 Variableprecision Floating Point (VFP) Numbers: 1.234v and 12v
 Complex Numbers: 1J2 or 3.4i5 or 2ad90 or 2ar2.1 or 2au0.5
 Quaternion Numbers: 1i2j3k4
 Octonion Numbers: 1i2j3k4l5ij6jk7kl8
System Commands
System Commands provide features to the user of the APL system, separate from actual workspaces, variables or APL operators. These provide such features as accessing files, saving a workspace, and exiting the APL interpreter. The commands are not case sensitive, so )IN and )in do the same thing.
NARS2000 currently has the following system commands:


System Variables and Functions
System Variables (A value may be assigned to these except for ⎕DM)  

⎕ALX  ⎕CT  ⎕DM  ⎕DT  ⎕ELX  ⎕FC  ⎕FEATURE  ⎕FPC  ⎕IC  ⎕IO 
⎕LR  ⎕LX  ⎕PP  ⎕PR  ⎕PW  ⎕RL  ⎕SA  ⎕WSID  
Niladic System Functions (a value cannot be assigned to these)  
⎕A  ⎕AV  ⎕EM  ⎕ET  ⎕LC  ⎕NNAMES  ⎕NNUMS  ⎕SI  ⎕SYSID  ⎕SYSVER 
⎕T  ⎕TC  ⎕TCBEL  ⎕TCBS  ⎕TCESC  ⎕TCFF  ⎕TCHT  ⎕TCLF  ⎕TCNL  ⎕TCNUL 
⎕TS  ⎕WA  
Monadic or dyadic system functions (a value cannot be assigned to these)  
⎕AT  ⎕CR  ⎕DC  ⎕DL  ⎕DR  ⎕EA  ⎕EC  ⎕ERROR  ⎕ES  ⎕EX 
⎕FMT  ⎕FX  ⎕MF  ⎕NAPPEND  ⎕NC  ⎕NCREATE  ⎕NERASE  ⎕NINFO  ⎕NL  ⎕NLOCK 
⎕NREAD  ⎕NRENAME  ⎕NREPLACE  ⎕NRESIZE  ⎕NSIZE  ⎕NTIE  ⎕NUNTIE  ⎕STOP  ⎕TF  ⎕TRACE 
⎕UCS  ⎕VR  
Note that quad functions and variables (except for the ⎕A family of functions) are case insensitive 