Personalized Array Translator: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 14: | Line 14: | ||
The '''Personalized Array Translator''' ('''PAT''') was an early experimental system, and together with [[IVSYS/7090]], one of the first implementations of [[Iverson Notation]] as a programming language. | The '''Personalized Array Translator''' ('''PAT''') was an early experimental system, and together with [[IVSYS/7090]], one of the first implementations of [[Iverson Notation]] as a programming language. | ||
In lieu of most proper APL [[glyphs]], PAT used letters prefixed by the <code>@</code> symbol. [[Comparison functions]] were denoted by <code>@</code> followed by three digits 0 or 1, indicating whether the function would return 1 or 0 if the left argument would be less than, equal to, or greater than the right argument, respectively. The language only allowed application of one function per statement, with the result being assigned. Valid statements were:<ref>Hellerman, H. [https://www.semanticscholar.org/paper/Experimental-personalized-array-translator-system-Hellerman/537d26ca8c4172cdd2976cffedef5422f61a00f2 Experimental personalized array translator system]. Communications of the [[wikipedia:Association_for_Computing_Machinery|ACM]]. July 1964. [[wikipedia:doi]] https://doi.org/10.1145/364520.364573</ref> | In lieu of most proper APL [[glyphs]], PAT used letters prefixed by the <code>@</code> symbol. [[Comparison functions]] were denoted by <code>@</code> followed by three digits 0 or 1, indicating whether the function would return 1 or 0 if the left argument would be less than, equal to, or greater than the right argument, respectively. The language only allowed application of one function per statement, with the result being assigned. Valid statements were:<ref>Hellerman, H. [https://www.semanticscholar.org/paper/Experimental-personalized-array-translator-system-Hellerman/537d26ca8c4172cdd2976cffedef5422f61a00f2 Experimental personalized array translator system]. Communications of the [[wikipedia:Association_for_Computing_Machinery|ACM]]. July 1964. [[wikipedia:doi|]]: https://doi.org/10.1145/364520.364573</ref> | ||
{| class=wikitable | {| class=wikitable | ||
Line 113: | Line 113: | ||
== References == | == References == | ||
<references/> | |||
{{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]] | {{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]] |
Revision as of 10:14, 25 May 2021
The Personalized Array Translator (PAT) was an early experimental system, and together with IVSYS/7090, one of the first implementations of Iverson Notation as a programming language.
In lieu of most proper APL glyphs, PAT used letters prefixed by the @
symbol. Comparison functions were denoted by @
followed by three digits 0 or 1, indicating whether the function would return 1 or 0 if the left argument would be less than, equal to, or greater than the right argument, respectively. The language only allowed application of one function per statement, with the result being assigned. Valid statements were:[1]
Name | PAT statement | Modern equivalent |
---|---|---|
Add | Z = X + Y |
Z ← X + Y
|
Subtract | Z = X - Y |
Z ← X - Y
|
Multiply | Z = X * Y |
Z ← X × Y
|
Divide | Z = X @D Y |
Z ← X ÷ Y
|
And | Z = X @A Y |
Z ← X ∧ Y
|
Or | Z = X @O Y |
Z ← X ∨ Y
|
Constant Zero | Z = X @000 Y |
Z ← X(=≠=)Y
|
Greater than | Z = X @001 Y |
Z ← X > Y
|
Equal | Z = X @010 Y |
Z ← X = Y
|
Greater than or equal | Z = X @011 Y |
Z ← X ≥ Y
|
Less than | Z = X @100 Y |
Z ← X < Y
|
Not equal | Z = X @101 Y |
Z ← X ≠ Y
|
Less than or equal | Z = X @110 Y |
Z ← X ≤ Y
|
Constant One | Z = X @111 Y |
Z ← X(===)Y
|
"Ceiling" (Maximum) | Z = X @C Y |
Z ← X ⌈ Y
|
"Floor" (Minimum) | Z = X @F Y |
Z ← X ⌊ Y
|
Exponential | Z = X @E Y |
Z ← X * Y
|
Assignment | Z = X |
Z ← X
|
Not | Z = @N X |
Z ← ~ X
|
Absolute value | Z = @A X |
Z ← | X
|
Sine | Z = @S X |
Z ← 1 ○ X
|
Cosine | Z = @C X |
Z ← 2 ○ X
|
Log (base 10) | Z = @L X |
Z ← 10 ⍟ X
|
Round up | Z = @U X |
Z ← ⌈ X
|
Round down | Z = @D X |
Z ← ⌊ X
|
Matrix Transpose | Z = @T X |
Z ← ⍉ X
|
Reduction* | Z = @U X |
Z ← +/ X
|
Base | Z = X @B Y |
Z ← X ⊥ Y
|
Residue | Z = X @W Y |
Z ← X | Y
|
Compression | Z = U / X |
Z ← U / X
|
Post Z with X controlled by U |
Z = U @P X |
|
Dimension array | @D X , C , R |
X ← R C ⍴ X or X ⍴⍨← R C
|
Juxtaposition | Z = X , X |
Z ← X , X
|
Left rotate | Z = K @L X |
Z ← K ⌽ X
|
Right rotate | Z = K @R X |
Z ← (-K) ⌽ X
|
Compare and branch | X @C Y, A, B, C |
|
Update X , compare and branch |
@U X , Y , A , B , C |
|
Interval | Z = @I I , J |
Z ← I … J
|
Mid-selection array | Z = @M I , J |
|
Get data (cards) | @G X |
|
Type data | @T X |
⎕ ← X
|
Transform floating–alphanumeric | Z = @X Y |
Z ← ⎕UCS Y or Z ← ⎕AF X
|
Accept data from typewriter | @A X |
X ← ⍞
|
Type heading message and proceed | @H any heading |
|
Type message, return to monitor | @M any message |
- Any scalar dyadic function may replace
+
in a reduction statement.
References
- ↑ Hellerman, H. Experimental personalized array translator system. Communications of the ACM. July 1964. [[wikipedia:doi|]]: https://doi.org/10.1145/364520.364573
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 |