From APL Wiki
Revision as of 17:37, 19 March 2024 by Marshall (talk | contribs) (Text replacement - "Stanford University" to "Stanford University")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

IVSYS/7090 (for "Iverson System" on the IBM 7090) was a proto-APL interpreter in FORTRAN. It was implemented by Larry Breed, who worked in Ken Iverson's group at IBM's Watson Research Center, and Phil Abrams, a graduate student at Stanford University. Running in 1965, the interpreter was the second computer implementation of Iverson notation, after PAT, and is often considered the first APL implementation, as it preceded APL\360.[1] However, it had substantial differences from APL as realized in APL\360, for example using the arrows and for rotation rather than Take and Drop.[2] Initially the program had to entered with punch cards, encoding symbols as multiple characters. However, it was soon adapted to run with a typewriter and type ball, and made available within IBM using the Time Sharing Monitor (TSM), an early time sharing system.[3] Ken Iverson and Adin Falkoff were able to use the system in teaching, and Eric Iverson to prepare an answer book for the problems in Ken's Elementary Functions. IVSYS was only available in this way for a short time, as the TSM project was terminated to make programmers available for a similar project, TSS/360. The machine IVSYS itself ran on was at some point put on a shipping platform and taken to an unknown destination.[4]


Simple unary and binary operators ("sops"), which would be called scalar monadic and dyadic functions in today's terminology:

Glyph Monadic Dyadic
+ Identity Addition
- Negate Subtraction
× Multiplication
÷ Division
Floor Minimum
Ceiling Maximum
| Absolute value Modulus
* Exponential Exponentiation
~ Complement (Not)
Logical AND
Logical OR
< Less than
Less than or Equal to
= Equal to
Not Equal to
Greater than or Equal to
> Greater than

Other operators ("oops"), called mixed functions in today's terminology:

Glyph Monadic Dyadic
Interval vector Index vector (Index of)
Rank vector (Shape) Replication (Reshape)
, Ravel Catenate
Rotate left 1 Left rotation
Rotate right 1 Right rotation
Prefix vector
Suffix vector
Characteristic vector (Member of)
Base 2 value Base value

The following primitive operations exist, with syntax as in modern APL, but are not classified as operators. All forms of / and \ allow an axis to be specified with brackets.

Glyph Definition
[] Indexing
/ Reduction
/ Compression
\ Expansion
. Generalized matrix product (Inner product)
∘. Outer product


  1. Adin Falkoff and Ken Iverson. The Design of APL. IBM Journal of Research and Development, Volume 17, Number 4. 1973-07.
  2. Philip Abrams. An interpreter for Iverson notation. 1966-08-17.
  3. Adin Falkoff and Ken Iverson. The Evolution of APL. ACM SIGPLAN Notices Volume 13, Number 8. 1978-08.
  4. Eugene McDonnell. The Socio-Technical Beginnings of APL.
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