Personalized Array Translator: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Created page with "{{Infobox array language | title = PAT | array model = flat without boxes | numeric types = floats | un...")
No edit summary
Line 17: Line 17:

{| class=wikitable
{| class=wikitable
! Name !! PAT code !! Modern equivalent
! Name !! PAT statement !! Modern equivalent
| [[Add]] || <code>Z = X + Y</code> || <source lang=apl inline>Z ← X + Y</source>
| [[Add]] || <code>Z = X + Y</code> || <source lang=apl inline>Z ← X + Y</source>

Revision as of 09:29, 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.


APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLdzaima/APLExtended Dyalog APLGNU APLKAPNARS2000Pometo
Historical A Programming LanguageA+ (A) ∙ APL#APL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyJellyfishK (Q, KDB+) ∙ Lang5NialRAD
Overviews Timeline of array languagesTimeline of influential array languagesFamily tree of array languages