Language Features: Difference between revisions
From NARS2000
Jump to navigationJump to search
Line 55: | Line 55: | ||
* [[Unicode|Unicode Characters]] | * [[Unicode|Unicode Characters]] | ||
* [[Array Predicates]] | * [[Array Predicates]] | ||
* [[Rational and VFP Numbers|Rational Numbers]]: <apll> | * [[Rational and VFP Numbers|Rational Numbers]]: <apll>1<pn>r</pn>3</apll> and <apll>12345<pn>x</pn></apll> | ||
* [[Rational and VFP Numbers|Variable-precision Floating Point (VFP) Numbers]]: <apll>1. | * [[Rational and VFP Numbers|Variable-precision Floating Point (VFP) Numbers]]: <apll>1.234<pn>v</pn></apll> and <apll>12<pn>v</pn></apll> | ||
* Complex Numbers: <apll> | * Complex Numbers: <apll>1<pn>J</pn>2</apll> or <apll>3.4<pn>i</pn>5</apll> or <apll>2<pn>ad</pn>90</apll> or <apll>2<pn>ar</pn>2.1</apll> or <apll>2<pn>au</pn>0.5</apll> | ||
* Quaternion Numbers: <apll> | * Quaternion Numbers: <apll>1<pn>i</pn>2<pn>j</pn>3<pn>k</pn>4</apll> | ||
* Octonion Numbers: <apll> | * Octonion Numbers: <apll>1<pn>i</pn>2<pn>j</pn>3<pn>k</pn>4<pn>l</pn>5<pn>ij</pn>6<pn>jk</pn>7<pn>kl</pn>8</apll> | ||
==System Commands== | ==System Commands== |
Revision as of 18:05, 9 April 2017
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.
Syntax
- Strand Assignment: (A1 A2 ... An)←R
- Modify Assignment: Af←R
- Modify Strand Assignment: (A1 A2 ... An)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 2e3 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 Euler-Mascheroni's Constant (0.5772156649015329...)
- 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).
- System Labels: ⎕ID, ⎕MS, and ⎕PRO in user-defined functions/operators.
- Anonymous Functions/Operators: one-line grouping of one or more statements all enclosed in braces such as {(+⌿⍵)÷≢⍵}.
Primitive functions
- Array Lookup: L⍸R
- Condense: <R
- Dilate: >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√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
- 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)
- 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
- Variable-precision 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 | ⎕DFT | ⎕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 |