APL\360

From APL Wiki
Jump to navigation Jump to search


APL\360 was the first implementation of APL using recognizable APL symbols. It ran on the IBM System/360, and was completed in November 1966 though at that time remained in use only within IBM. In 1973 its implementers, Larry Breed, Dick Lathwell and Roger Moore, were awarded the Grace Murray Hopper Award from the Association for Computing Machinery (ACM). It was given "for their work in the design and implementation of APL\360, setting new standards in simplicity, efficiency, reliability and response time for interactive systems."

In 1975, the IBM 5100 microcomputer offered APL\360 as one of two built-in ROM-based interpreted languages for the computer, complete with a keyboard and display that supported all the special symbols used in the language.

Significant developments to APL\360 included CMS/APL, which made use of the virtual storage capabilities of CMS and APLSV, which introduced shared variables, system variables and system functions. It was subsequently ported to the IBM System/370 and VSPC platforms until its final release in 1983, after which it was replaced by APL2.

Implementation

Internal types

APL\360 uses four element types for arrays, three numeric and one character:

  • 1-bit packed Boolean
  • 4-byte integer
  • 8-byte floating point
  • 1-byte character

Primitives

Functions

Glyph Monadic Dyadic
+ Conjugate Plus
- Negative Minus
× Signum Times
÷ Reciprocal Divide
| Magnitude Residue
Floor Minimum
Ceiling Maximum
? Roll Deal
* Exponential Power
Natural logarithm General logarithm
Pi times Circular, hyperbolic, and pythagorean functions
! Factorial Binomial
~ Not Without
And
Or
Nand
Nor
< Less
Not greater
= Equal
Not less
> Greater
Not equal
Shape of Reshape
, Ravel Catenate, Laminate (allows axis)
Reverse
(allows axis)
Rotate
(allows axis)
Transpose
Take
Drop
/ Compress
(allows axis)
\ Expand
(allows axis)
[] Indexing
Index generator Index of
Membership
Grade up
Grade down
Matrix inverse Matrix division
Decode
Encode
Execute
Monadic format Dyadic format

Operators

Glyph Valence Monadic call Dyadic call
/ Monadic Reduction
(allows axis)
Monadic
\ Monadic Scan
(allows axis)
Monadic
. Dyadic Inner product
∘. Monadic Outer product
[] Monadic Axis


APL dialects [edit]
Maintained APL+Win (APL*PLUS) ∙ APL2APL64APL\ivCo-dfnsDyalog APLdzaima/APLGNU APLNARS2000ngn/apl
Historical Iverson notationA Programming LanguageA+ (A) ∙ APL#APL.68000APL.SVAPLXAPL\1130APL\360NARSopenAPLRowanSHARP APL (SAX) ∙ VisualAPL (APLNext) ∙ VSAPLYork APL
Derivatives ELIJK (Q, KDB+) ∙ LYaPASNialRAD