IVSYS/7090: Difference between revisions

Jump to navigation Jump to search
Primitives
(Created page with "{{Infobox array language | array model = flat without boxes | index origin = 1 | function styles = defined function | numeric types = integer, float | unicode support = no | released = 1965 | developer = Larry Breed (IBM), Phil Abrams | implementation language = wikipedia:FORTRAN | platforms = wikipedia:IBM 7090 | ope...")
 
(Primitives)
Line 16: Line 16:


'''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 [[wikipedia:Thomas J. Watson Research Center|Thomas J. Watson Research Center]], and [[Phil Abrams]], a graduate student at [[wikipedia:Stanford University|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>
'''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 [[wikipedia:Thomas J. Watson Research Center|Thomas J. Watson Research Center]], and [[Phil Abrams]], a graduate student at [[wikipedia:Stanford University|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 ==
Simple binary operators (sops):
{| class=wikitable
! Glyph                                                !! Monadic              !! Dyadic
|-
| <syntaxhighlight lang=apl inline>+</syntaxhighlight> || [[Identity]]          || [[Addition]]
|-
| <syntaxhighlight lang=apl inline>-</syntaxhighlight> || [[Negate]]            || [[Subtraction]]
|-
| <syntaxhighlight lang=apl inline>×</syntaxhighlight> ||                      || [[Multiplication]]
|-
| <syntaxhighlight lang=apl inline>÷</syntaxhighlight> ||                      || [[Division]]
|-
| <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || [[Floor]]            || [[Minimum]]
|-
| <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> || [[Ceiling]]          || [[Maximum]]
|-
| <syntaxhighlight lang=apl inline>|</syntaxhighlight> || [[Absolute value]]    || [[Modulus]]
|-
| <syntaxhighlight lang=apl inline>*</syntaxhighlight> || [[Exponential]]      || [[Exponentiation]]
|-
| <syntaxhighlight lang=apl inline>~</syntaxhighlight> || Complement ([[Not]])  ||
|-
| <syntaxhighlight lang=apl inline>∧</syntaxhighlight> ||                      || [[And|Logical AND]]
|-
| <syntaxhighlight lang=apl inline>∨</syntaxhighlight> ||                      || [[Or|Logical OR]]
|-
| <syntaxhighlight lang=apl inline><</syntaxhighlight> ||                      || [[Less than]]
|-
| <syntaxhighlight lang=apl inline>≤</syntaxhighlight> ||                      || [[Less than or Equal to]]
|-
| <syntaxhighlight lang=apl inline>=</syntaxhighlight> ||                      || [[Equal to]]
|-
| <syntaxhighlight lang=apl inline>≠</syntaxhighlight> ||                      || [[Not Equal to]]
|-
| <syntaxhighlight lang=apl inline>≥</syntaxhighlight> ||                      || [[Greater than or Equal to]]
|-
| <syntaxhighlight lang=apl inline>></syntaxhighlight> ||                      || [[Greater than]]
|}
Other operators (oops):
{| class=wikitable
! Glyph                                                !! Monadic              !! Dyadic
|-
| <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> || [[Interval vector]]  || Index vector ([[Index of]])
|-
| <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> || Rank vector ([[Shape]]) || Replication ([[Reshape]])
|-
| <syntaxhighlight lang=apl inline>,</syntaxhighlight> || [[Ravel]]            || [[Catenate]]
|-
| <syntaxhighlight lang=apl inline>↑</syntaxhighlight> || Rotate left 1        || [[Rotate|Left rotation]]
|-
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight> || Rotate right 1        || [[Rotate|Right rotation]]
|-
| <syntaxhighlight lang=apl inline>⍺</syntaxhighlight> ||                      || Prefix vector
|-
| <syntaxhighlight lang=apl inline>⍵</syntaxhighlight> ||                      || Suffix vector
|-
| <syntaxhighlight lang=apl inline>∊</syntaxhighlight> ||                      || Characteristic vector ([[Member of]])
|-
| <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> || Base 2 value          || [[Decode|Base value]]
|-
| <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> ||                      || [[Encode|Representation]]
|}
The following primitive operations exist, with syntax as in modern APL, but are not classified as operators. All forms of <syntaxhighlight lang=apl inline>/</syntaxhighlight> and <syntaxhighlight lang=apl inline>\</syntaxhighlight> allow an [[Function axis|axis]] to be specified with brackets.
{| class=wikitable
! Glyph                                                !! Definition
|-
| <syntaxhighlight lang=apl inline>[]</syntaxhighlight> || [[Bracket indexing|Indexing]]
|-
| <syntaxhighlight lang=apl inline>/</syntaxhighlight>  || [[Reduction]]
|-
| <syntaxhighlight lang=apl inline>/</syntaxhighlight>  || [[Compression]]
|-
| <syntaxhighlight lang=apl inline>\</syntaxhighlight>  || [[Expansion]]
|-
| <syntaxhighlight lang=apl inline>.</syntaxhighlight>  || Generalized matrix product ([[Inner product]])
|-
| <syntaxhighlight lang=apl inline>∘.</syntaxhighlight> || [[Outer product]]
|}


== References ==
== References ==
<references/>
<references/>
{{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]]
{{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]]

Navigation menu