APL/700: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
| index origin            = 0 or 1
| index origin            = 0 or 1
| function styles          = [[defined function]]
| function styles          = [[defined function]]
| numeric types            = 64-bit float
| numeric types            = 48-bit float
| unicode support          = no
| unicode support          = no
| released                = November 15, 1976
| developer                = [[wikipedia:Burroughs Corporation|Burroughs Corporation]]
| developer                = [[wikipedia:Burroughs Corporation|Burroughs Corporation]]
| platforms                = [[wikipedia:Burroughs_large_systems#B6700_and_B7700|B 6700/B 7700]]
| platforms                = [[wikipedia:Burroughs_large_systems#B6700_and_B7700|B 6700/B 7700]]
Line 12: Line 11:
| influenced by            = [[APL.SV]]
| influenced by            = [[APL.SV]]
}}
}}
''APL/700''' was an APL implementation by [[wikipedia:Burroughs Corporation]] for their B6700/B7700 line of mainframe computers. The language was mostly identical to that of [[APL.SV]] and its successors, but differed in a few details:
'''APL/700''' was an APL implementation by [[wikipedia:Burroughs Corporation|Burroughs Corporation]] for their [[wikipedia:Burroughs_large_systems|700 series]] of mainframe computers. The language was mostly identical to that of [[APL.SV]] and its successors, but differed in a few details:<ref>Burroughs Corporation. User Reference Manual (5000813). 1975.</ref>
* The statement separator was a semicolon (<source lang=apl inline>;</source>) rather than the conventional diamond <source lang=apl inline>¨</source> and statements in such a so-called ''list'' were evaluated from right to left, much as if the semicolon was the Left [[identity]] function (<source lang=apl inline>⊣</source>).
* The statement separator was a semicolon (<source lang=apl inline>;</source>) rather than the conventional diamond <source lang=apl inline></source> and statements in such a so-called ''list'' were evaluated from right to left, much as if the semicolon was the Left [[identity]] function (<source lang=apl inline>⊣</source>).
* In primitive pairs with both a last and first [[axis]] version, for example <source lang=apl inline>/</source> vs <source lang=apl inline>⌿</source> and <source lang=apl inline>⌽</source> vs <source lang=apl inline>⊖</source>, the first axis version would use the [[function axis]] syntax to indicate the applicable axis counted from the ''last'' axis rather than from the first axis. For example <source lang=apl inline>⊖[1]</source> was equivalent to <source lang=apl inline>⌽</source> just like <source lang=apl inline>⌽[1]</source> was equivalent to <source lang=apl inline>⊖</source>.
* In primitive pairs with both a last and first [[axis]] version, for example <source lang=apl inline>/</source> vs <source lang=apl inline>⌿</source> and <source lang=apl inline>⌽</source> vs <source lang=apl inline>⊖</source>, the first axis version would use the [[function axis]] syntax to indicate the applicable axis counted from the ''last'' axis rather than from the first axis. For example <source lang=apl inline>⊖[1]</source> was equivalent to <source lang=apl inline>⌽</source> just like <source lang=apl inline>⌽[1]</source> was equivalent to <source lang=apl inline>⊖</source>.
* While in general reduction using scalar functions were supported by for arrays of a compatible data type (numeric or character), <source lang=apl inline>=/</source> and <source lang=apl inline>≠/</source> did not support character data.
* While in general reduction using scalar functions were supported by for arrays of a compatible data type (numeric or character), <source lang=apl inline>=/</source> and <source lang=apl inline>≠/</source> did not support character data.
* APL/700 included [[modified assignment]], but the pass-through value was the new value of the updated array.
* APL/700 included [[modified assignment]], but the pass-through value was the new value of the updated array.
* More [[set functions]] were included than even modern APLs have. In particular <source lang=apl inline>⊂</source> and <source lang=apl inline>⊂</source> were Subset and Superset, though not strict subset and superset, but rather as <source lang=apl inline>{∧/(,a)∊(,⍵)}</source> and <source lang=apl inline>{∧/(,⍵)∊(,⍺)}</source>. Further-more, all the set functions except for Membership were defined in terms of the [[ravel]] of the arguments, and thus always returned a [[vector]].
* More [[set functions]] were included than even modern APLs have. In particular <source lang=apl inline>⊂</source> and <source lang=apl inline>⊂</source> were Subset and Superset, though not strict subset and superset, but rather as <source lang=apl inline>{∧/(,)∊(,⍵)}</source> and <source lang=apl inline>{∧/(,⍵)∊(,⍺)}</source>. All the set functions except for Membership were defined in terms of the [[ravel]] of the arguments, and thus always returned a [[vector]]. Furthermore, [[Union]] (<source lang=apl inline>∪</source>), [[Intersection]] (<source lang=apl inline>∩</source>), and [[Set difference]] (<source lang=apl inline>~</source>) returned only [[Unique]] elements, that is, a vector with no duplicates.  
* Format <source lang=apl inline>⍕</source> allowed an advanced formatting specification through a character left argument.
* Format <source lang=apl inline>⍕</source> allowed an advanced formatting specification through a character left argument.
* Many additional [[quad name]]s were available, including a set of two-letter system functions with all the combinations of S/R/Q (for Stop, Reset, Query) with T/S/M (Trace, Stop, Monitor), and character constants for control characters (<source lang=apl inline>⎕B</source>, <source lang=apl inline>⎕L</source>, <source lang=apl inline>⎕R</source>, <source lang=apl inline>⎕T</source>, and <source lang=apl inline>⎕N</source> for Backspace, Linefeed, Return, Tab, and Null), the [[digits]] <source lang=apl inline>⎕D</source>, and the [[alphabet]] (<source lang=apl inline>⎕A</source>).
* Many additional [[quad name]]s were available, including a set of two-letter system functions with all the combinations of S/R/Q (for Stop, Reset, Query) with T/S/M (Trace, Stop, Monitor), and character constants for control characters (<source lang=apl inline>⎕B</source>, <source lang=apl inline>⎕L</source>, <source lang=apl inline>⎕R</source>, <source lang=apl inline>⎕T</source>, and <source lang=apl inline>⎕N</source> for Backspace, Linefeed, Return, Tab, and Null), the [[digits]] <source lang=apl inline>⎕D</source>, and the [[alphabet]] (<source lang=apl inline>⎕A</source>).
* In a manner similar to the much later [[APLX]], APL/700 had [[primitive function]]s for file operations. In particular, <source lang=apl inline>⍍</source> to create, rename and change password for files, and <source lang=apl inline>⍔</source> for deleting files. <source lang=apl inline>⍃</source> and <source lang=apl inline>⍄</source> were used to read+pop and append components to the beginning and end of a file, respectively. This was in addition to <source lang=apl inline>⍇</source> and <source lang=apl inline>⍈</source> for read and write operations (as in APLX).
* In a manner similar to, but more extensively than the much later [[APLX]], APL/700 had [[primitive function]]s for file operations. In addition to <source lang=apl inline>⍇</source> and <source lang=apl inline>⍈</source> for read and write operations (as in APLX), it supported the following:
* Equivalents of normal primitive functions were supplied for operations on component files, treating the files as vectors of elements: <source lang=apl inline>⍐</source> and <source lang=apl inline>⍗</source> acted like [[Take]] and [Drop]] (<source lang=apl inline>↑</source> and <source lang=apl inline>↓</source>). <source lang=apl>⌼</source> would [[Reverse]] and [[Rotate]] (<source lang=apl inline>⌽</source>).
** <source lang=apl inline>⍍</source> to create, rename and change password for files, and <source lang=apl inline>⍔</source> for deleting files.
** <source lang=apl inline>⍃</source> and <source lang=apl inline>⍄</source> were used to read+pop and append components to the beginning and end of a file, respectively.
** Equivalents of normal primitive functions for operations on component of files as if they were elements of a vectors: <source lang=apl inline>⍐</source> and <source lang=apl inline>⍗</source> acted like [[Take]] and [[Drop]] (<source lang=apl inline>↑</source> and <source lang=apl inline>↓</source>). <source lang=apl inline>⌼</source> would [[Reverse]] and [[Rotate]] (<source lang=apl inline>⌽</source>). <source lang=apl inline>⍁</source> and <source lang=apl inline>⍂</source> were [[Compress]] and [[Expand]] (<source lang=apl inline>/</source> and <source lang=apl inline>\</source>).
** <source lang=apl inline>⍓</source> and <source lang=apl inline>⍌</source> and <source lang=apl inline>⍗</source> were used to hold, free, and relase a file.
** <source lang=apl inline>⌸</source> and <source lang=apl inline>⍯</source> returned maps for non-null and null components, respectively.
** <source lang=apl inline>⌻</source> provided meta information about a file or the file system.
== References ==
<references/>
{{APL dialects}}[[Category:Flat array languages]]
{{APL dialects}}[[Category:Flat array languages]]

Revision as of 09:27, 8 September 2020

APL/700 was an APL implementation by Burroughs Corporation for their 700 series of mainframe computers. The language was mostly identical to that of APL.SV and its successors, but differed in a few details:[1]

  • The statement separator was a semicolon (;) rather than the conventional diamond and statements in such a so-called list were evaluated from right to left, much as if the semicolon was the Left identity function ().
  • In primitive pairs with both a last and first axis version, for example / vs and vs , the first axis version would use the function axis syntax to indicate the applicable axis counted from the last axis rather than from the first axis. For example ⊖[1] was equivalent to just like ⌽[1] was equivalent to .
  • While in general reduction using scalar functions were supported by for arrays of a compatible data type (numeric or character), =/ and ≠/ did not support character data.
  • APL/700 included modified assignment, but the pass-through value was the new value of the updated array.
  • More set functions were included than even modern APLs have. In particular and were Subset and Superset, though not strict subset and superset, but rather as {∧/(,⍺)∊(,⍵)} and {∧/(,⍵)∊(,⍺)}. All the set functions except for Membership were defined in terms of the ravel of the arguments, and thus always returned a vector. Furthermore, Union (), Intersection (), and Set difference (~) returned only Unique elements, that is, a vector with no duplicates.
  • Format allowed an advanced formatting specification through a character left argument.
  • Many additional quad names were available, including a set of two-letter system functions with all the combinations of S/R/Q (for Stop, Reset, Query) with T/S/M (Trace, Stop, Monitor), and character constants for control characters (⎕B, ⎕L, ⎕R, ⎕T, and ⎕N for Backspace, Linefeed, Return, Tab, and Null), the digits ⎕D, and the alphabet (⎕A).
  • In a manner similar to, but more extensively than the much later APLX, APL/700 had primitive functions for file operations. In addition to and for read and write operations (as in APLX), it supported the following:
    • to create, rename and change password for files, and for deleting files.
    • and were used to read+pop and append components to the beginning and end of a file, respectively.
    • Equivalents of normal primitive functions for operations on component of files as if they were elements of a vectors: and acted like Take and Drop ( and ). would Reverse and Rotate (). and were Compress and Expand (/ and \).
    • and and were used to hold, free, and relase a file.
    • and returned maps for non-null and null components, respectively.
    • provided meta information about a file or the file system.

References

  1. Burroughs Corporation. User Reference Manual (5000813). 1975.
APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000PometoTinyAPL
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages