Personalized Array Translator: Difference between revisions
No edit summary 
m (Combine two "influenced by" fields) 

Line 9:  Line 9:  
 platforms = [[wikipedia:IBM 1620IBM 1620]]   platforms = [[wikipedia:IBM 1620IBM 1620]]  
 documentation = [https://www.semanticscholar.org/paper/ExperimentalpersonalizedarraytranslatorsystemHellerman/537d26ca8c4172cdd2976cffedef5422f61a00f2 ''Experimental personalized array translator system'']   documentation = [https://www.semanticscholar.org/paper/ExperimentalpersonalizedarraytranslatorsystemHellerman/537d26ca8c4172cdd2976cffedef5422f61a00f2 ''Experimental personalized array translator system'']  
 influenced by = [[Iverson notation]]   influenced by = [[Iverson notation]], [[IVSYS/7090]]  
}}  }}  
Revision as of 14:04, 26 May 2021
The Personalized Array Translator (PAT) was an early experimental system create by Dr. Herbert Hellerman of the IBM System Research Institute. It was the first implementation of Iverson Notation as a programming language, preceding even IVSYS/7090. Ken Iverson used the PAT system in his early work with students in the local secondary school, and had a profound influence on Iverson's notation, as can be seen in his book Elementary Functions An Algorithmic Treatment.
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

Midselection 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 ∙ Codfns ∙ Dyalog APL ∙ dzaima/APL ∙ Extended Dyalog APL ∙ GNU APL ∙ KAP ∙ NARS2000 ∙ Pometo 
Historical  A Programming Language ∙ A+ (A) ∙ APL# ∙ APL\360 ∙ APL/700 ∙ APL\1130 ∙ APL\3000 ∙ APL.68000 ∙ APL*PLUS ∙ APL.jl ∙ APL.SV ∙ APLX ∙ 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 ∙ Jellyfish ∙ K (Q, KDB+) ∙ Lang5 ∙ Nial ∙ RAD 
Overviews  Timeline of array languages ∙ Timeline of influential array languages ∙ Family tree of array languages 