IVSYS/7090: Difference between revisions
(add "unary" and clarify terminology) |
m (Text replacement - "Stanford University" to "Stanford University") |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 15: | Line 15: | ||
}} | }} | ||
'''IVSYS/7090''' (for "Iverson System" on the [[wikipedia:IBM 7090|IBM 7090]]) was a proto-APL interpreter in [[wikipedia:FORTRAN|FORTRAN]]. It was implemented by [[Larry Breed]], who worked in [[Ken Iverson]]'s group at [[IBM]]'s [[ | '''IVSYS/7090''' (for "Iverson System" on the [[wikipedia:IBM 7090|IBM 7090]]) was a proto-APL interpreter in [[wikipedia:FORTRAN|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]].<ref>[[Adin Falkoff]] and [[Ken Iverson]]. [https://www.jsoftware.com/papers/APLDesign.htm The Design of APL]. IBM Journal of Research and Development, Volume 17, Number 4. 1973-07.</ref> However, it had substantial differences from APL as realized in APL\360, for example using the arrows <syntaxhighlight lang=apl inline>↑</syntaxhighlight> and <syntaxhighlight lang=apl inline>↓</syntaxhighlight> for [[Rotate|rotation]] rather than [[Take]] and [[Drop]].<ref>[[Philip Abrams]]. [http://infolab.stanford.edu/TR/CS-TR-66-47.html An interpreter for Iverson notation]. 1966-08-17.</ref> 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.<ref>[[Adin Falkoff]] and [[Ken Iverson]]. [https://www.jsoftware.com/papers/APLEvol.htm The Evolution of APL]. ACM SIGPLAN Notices Volume 13, Number 8. 1978-08.</ref> 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, [[wikipedia:TSS/360|TSS/360]]. The machine IVSYS itself ran on was at some point put on a shipping platform and taken to an unknown destination.<ref>[[Eugene McDonnell]]. [https://www.jsoftware.com/papers/eem/socio1.htm The Socio-Technical Beginnings of APL].</ref> | ||
== Primitives == | == Primitives == | ||
Simple unary and binary operators ("sops"), which would be called [[scalar function|scalar]] [[monadic]] and [[dyadic]] [[function]]s in today's terminology: | Simple unary and binary operators ("sops"), which would be called [[scalar function|scalar]] [[monadic]] and [[dyadic]] [[function]]s in today's [[terminology]]: | ||
{| class=wikitable | {| class=wikitable | ||
Line 74: | Line 74: | ||
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight> || Rotate right 1 || [[Rotate|Right rotation]] | | <syntaxhighlight lang=apl inline>↓</syntaxhighlight> || Rotate right 1 || [[Rotate|Right rotation]] | ||
|- | |- | ||
| <syntaxhighlight lang=apl inline>⍺</syntaxhighlight> || || Prefix vector | | <syntaxhighlight lang=apl inline>⍺</syntaxhighlight> || || [[Prefix vector]] | ||
|- | |- | ||
| <syntaxhighlight lang=apl inline>⍵</syntaxhighlight> || || Suffix vector | | <syntaxhighlight lang=apl inline>⍵</syntaxhighlight> || || [[Suffix vector]] | ||
|- | |- | ||
| <syntaxhighlight lang=apl inline>∊</syntaxhighlight> || || Characteristic vector ([[Member of]]) | | <syntaxhighlight lang=apl inline>∊</syntaxhighlight> || || Characteristic vector ([[Member of]]) |
Latest revision as of 17:37, 19 March 2024
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]
Primitives
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 |
⊤ |
Representation |
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 |
References
- ↑ Adin Falkoff and Ken Iverson. The Design of APL. IBM Journal of Research and Development, Volume 17, Number 4. 1973-07.
- ↑ Philip Abrams. An interpreter for Iverson notation. 1966-08-17.
- ↑ Adin Falkoff and Ken Iverson. The Evolution of APL. ACM SIGPLAN Notices Volume 13, Number 8. 1978-08.
- ↑ Eugene McDonnell. The Socio-Technical Beginnings of APL.
APL dialects [edit] | |
---|---|
Maintained | APL+Win ∙ APL2 ∙ APL64 ∙ APL\iv ∙ Aplette ∙ April ∙ Co-dfns ∙ Dyalog APL ∙ Dyalog APL Vision ∙ dzaima/APL ∙ GNU APL ∙ Kap ∙ NARS2000 ∙ Pometo ∙ TinyAPL |
Historical | A Programming Language ∙ A+ (A) ∙ APL# ∙ APL2C ∙ APL\360 ∙ APL/700 ∙ APL\1130 ∙ APL\3000 ∙ APL.68000 ∙ APL*PLUS ∙ APL.jl ∙ APL.SV ∙ APLX ∙ Extended Dyalog APL ∙ Iverson notation ∙ IVSYS/7090 ∙ NARS ∙ ngn/apl ∙ openAPL ∙ Operators and Functions ∙ PAT ∙ Rowan ∙ SAX ∙ SHARP APL ∙ Rationalized APL ∙ VisualAPL (APLNext) ∙ VS APL ∙ York APL |
Derivatives | AHPL ∙ BQN ∙ CoSy ∙ ELI ∙ Glee ∙ I ∙ Ivy ∙ J ∙ Jelly ∙ K (Goal, Klong, Q) ∙ KamilaLisp ∙ Lang5 ∙ Lil ∙ Nial ∙ RAD ∙ Uiua |
Overviews | Comparison of APL dialects ∙ Timeline of array languages ∙ Timeline of influential array languages ∙ Family tree of array languages |