APL\360

From APL Wiki
Revision as of 13:27, 30 April 2020 by Marshall (talk | contribs) (Text replacement - "{{APL dialects}}" to "{{APL dialects}}Category:APL dialects")
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."

Beginning in 1975, the IBM 5100 line of microcomputers 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 APL.SV, 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.

IBM 5110

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

APL\360 evolved rapidly during its early development within IBM and more slowly as it became available to outside users. Here we show the primitives described in its documentation in 1968 when it was first released as a stand-alone product (a Type-III Library). Later additions include Matrix Inverse and Matrix Divide; Execute, Format, and Scan introduced by APL.SV; and an axis and Laminate form for the Catenate function.

Functions

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

Operators

"The OPR is my shepherd; I shall not want.
He maketh me to lie down in green computer centers; he leadeth me beside the still HARDWARE
He restoreth my PROCEED LIGHT; he leadeth me in the paths of correct syntax for IBM's name's sake
Yea, through I walk through the valley of the shadow of the endless loop, I will fear no evil; for thou art with me; thy )OPRN and thy BOUNCE they comfort me.
Thou preparest a terminal before me in the presence of mine enemies; though anointest my PRINTOUT with PA!:'S; my workspace runneth over.
Surely VALUE ERRORS and SYNTAX ERRORS shall follow me thru all the steps of my programs, and I will dwell in the library of the 360 forever!"

IBM/360. Psalm, 1969.

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

External links

APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000Pometo
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages