SHARP APL: Difference between revisions
Jump to navigation
Jump to search
Miraheze>Adám Brudzewsky mNo edit summary |
Miraheze>Adám Brudzewsky No edit summary |
||
Line 2: | Line 2: | ||
| array model = [[Flat array model|flat]] with [[Box|boxes]] | | array model = [[Flat array model|flat]] with [[Box|boxes]] | ||
| index origin = 0 or 1 | | index origin = 0 or 1 | ||
| function styles = [[defined functions]] | | function styles = [[defined functions]] | ||
| numeric types = 64-bit float, complex | | numeric types = 64-bit float, complex | ||
| unicode support = none | | unicode support = none | ||
| released = around 1979 | | released = around 1979 | ||
| withdrawn = around | | withdrawn = around 1993 | ||
| latest release = | | latest release = 002.140 / 1988 | ||
| platforms = S/370, x86 | | platforms = S/370, x86 | ||
| operating systems = DOS/390, DOS, UNIX (AIX, Solaris), Linux | | operating systems = DOS/390, DOS, UNIX (AIX, Solaris), Linux | ||
Line 13: | Line 13: | ||
| developer = [[I.P. Sharp Associates]] | | developer = [[I.P. Sharp Associates]] | ||
| influenced by = [[APL\360]] | | influenced by = [[APL\360]] | ||
| influenced = [[ | | influenced = [[SAX]], [[J]], [[A+]], [[K]] | ||
| file ext = .saw, .saf, .sam | |||
| file ext = .saw, .saf, .sam | |||
| download = [http://www.sigapl.org/Archives/waterloo_archive/apl/sharp.apl/index.html SIGAPL] | | download = [http://www.sigapl.org/Archives/waterloo_archive/apl/sharp.apl/index.html SIGAPL] | ||
}} | }} | ||
[[File:Old SHARP APL.png|thumb|right|SHARP APL running under DOSBox]] | [[File:Old SHARP APL.png|thumb|right|SHARP APL running under DOSBox]] | ||
'''SHARP APL''' | '''SHARP APL''' was a standalone version of APL offered by [[I.P. Sharp Associates]] (IPSA), who had previously offered APL interpretation as a timesharing service. IPSA employed many notable APL designers including [[Ken Iverson]], and SHARP APL was the source of many developments in [[flat array theory]]. | ||
== Primitive functions == | == Primitive functions == | ||
Revision as of 08:12, 13 November 2019
SHARP APL was a standalone version of APL offered by I.P. Sharp Associates (IPSA), who had previously offered APL interpretation as a timesharing service. IPSA employed many notable APL designers including Ken Iverson, and SHARP APL was the source of many developments in flat array theory.
Primitive functions
Arithmetic
Scalar
All scalar functions have rank zero.
Glyph | Monadic | Dyadic |
---|---|---|
+ |
Conjugate/Identity | Addition |
- |
Negate | Subtraction |
× |
Signum | Multiplication |
÷ |
Reciprocal | Division |
* |
Exponential | Power |
⍟ |
Natural Logarithm | Base-⍺ Logarithm |
| |
Magnitude | Residue |
! |
Factorial | Out-Of/Combinations |
⌊ |
Floor | Minimum |
⌈ |
Ceiling | Maximum |
○ |
Pi Times | Circle functions |
∧ |
And/Least Common Multiple (LCM) | |
∨ |
Or/Greatest Common Divisor (GCD) | |
⍲ |
Nand | |
⍱ |
Nor | |
~ |
Not | See Miscellaneous |
? |
Roll | See Non-scalar |
Non-scalar
Glyph | Rank | Monadic | Ranks | Dyadic |
---|---|---|---|---|
⌹ |
2 | Matrix inverse | ∞ 2 | Matrix divide |
? |
See Scalar | * * | Deal | |
⊤ |
∞ ∞ | Encode | ||
⊥ |
∞ ∞ | Decode |
Relational
Glyph | Rank | Monadic | Ranks | Dyadic |
---|---|---|---|---|
= |
See Miscellaneous | 0 0 | Equals | |
≠ |
See Miscellaneous | 0 0 | Not Equals | |
< |
See Structural | 0 0 | Less Than | |
≤ |
0 0 | Less Than or Equal | ||
≥ |
0 0 | Greater Than or Equal | ||
> |
See Structural | 0 0 | Greater Than | |
≡ |
∞ ∞ | Match | ||
∊ |
0 ∞ | Membership | ||
⍷ |
∞ ∞ | Find |
Indexing
Glyph | Rank | Monadic | Ranks | Dyadic |
---|---|---|---|---|
@ |
See Miscellaneous | 0 ∞ | From | |
⍳ |
1 | Count | 1 0 | Index Of |
⍸ |
∞ ∞ | Index | ||
⍋ |
∞ | Numeric Grade up | ∞ ∞ | Character Grade up |
⍒ |
∞ | Numeric Grade down | ∞ ∞ | Character Grade down |
Structural
Glyph | Rank | Monadic | Ranks | Dyadic |
---|---|---|---|---|
⍴ |
∞ | Shape of | 1 ∞ | Reshape |
↑ |
See Miscellaneous | 1 ∞ | Take | |
↓ |
∞ | Raze | 1 ∞ | Drop |
< |
∞ | Enclose/Box | See Relational | |
⊃ |
∞ | Conditional Enclose | ∞ ∞ | Link |
> |
0 | Disclose/Open | See Relational | |
, |
∞ | Ravel | ∞ ∞ | Catenate |
⍪ |
∞ | Table | ∞ ∞ | Catenate-Down |
⌽ |
1 | Reverse | 0 1 | Rotate |
⊖ |
∞ | Reverse-Down | ∞ ∞ | Rotate-Down |
⍉ |
∞ | Monadic Transpose | 0 ∞ | Dyadic Transpose |
Miscellaneous
Glyph | Rank | Monadic | Ranks | Dyadic |
---|---|---|---|---|
⊣ |
∞ | Stop | ∞ ∞ | Left |
⊢ |
∞ | Pass | ∞ ∞ | Right |
≠ |
∞ | Nubsieve | See Relational | |
↑ |
∞ | Nub | See Structural | |
= |
∞ | Nubin | See Relational | |
~ |
See Scalar | ∞ ∞ | Less | |
@ |
1 | All | See Indexing | |
⍕ |
∞ | Monadic Format | * ∞ | Dyadic Format |
⍎ |
* | Execute |
Primitive Operators
Glyph | Operands | Ranks | Monadic Call | Dyadic Call | ||
---|---|---|---|---|---|---|
/ |
f |
∞ |
Reduce | |||
⌿ |
f |
∞ |
Reduce-down | |||
\ |
f |
∞ |
Scan | |||
⍀ |
f |
∞ |
Scan-down | |||
/ |
m |
∞ |
Copy/Compress | |||
⌿ |
m |
∞ |
Copy-down/Compress-down | |||
\ |
m |
∞ |
Expand | |||
⍀ |
m |
∞ |
Expand-down | |||
⊂ |
f |
∞ |
rf lf |
Swap | ||
& |
f |
∞ |
∞ ∞ |
Select | ||
⍤ |
f |
g |
mg |
mg mg |
On (close Over) | |
⍤ |
f |
n |
n |
n n |
Rank | |
⍤ |
m |
g |
mg |
mg mg |
Cut | |
⍥ |
f |
g |
mg |
mg mg |
Upon (close Atop) | |
¨ |
f |
g |
mg |
mg mg |
Under | |
¨ |
m |
g |
mg |
With (Bind) | ||
¨ |
f |
n |
mf |
|||
. |
f |
g |
2 |
∞ ∞ |
Alternant | Inner-product |
. |
m |
g |
∞ ∞ |
Tie, Outer-product | ||
. |
f |
m |
mf |
Ply |
Implementation
Numeric types
SHARP originally supported only real numbers using double (8-byte) precision. Numbers were stored in one of three types:
- Boolean, with one bit per value
- Integer, with four bytes per value
- Floating, with eight bytes per value
SATN-40 describes the addition of complex numbers to SHARP APL.