APL/700: Difference between revisions

Jump to navigation Jump to search
1,793 bytes added ,  07:43, 8 September 2020
no edit summary
(Created page with "{{Infobox array language | array model = flat without boxes | index origin = 0 or 1 | function styles = define...")
 
No edit summary
Line 10: Line 10:
| operating systems        = [[wikipedia:Burroughs MCP|Burroughs MCP]]
| operating systems        = [[wikipedia:Burroughs MCP|Burroughs MCP]]
| documentation            = [http://www.softwarepreservation.org/projects/apl/Manuals/APL700UserReferenceManual User Reference Manual (pdf)]
| documentation            = [http://www.softwarepreservation.org/projects/apl/Manuals/APL700UserReferenceManual User Reference Manual (pdf)]
| influenced by            = [[APL\360]]
| 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\360]] and its successors, but differed in a few details:
''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:
* 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>.
Line 18: Line 18:
* 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>{∧/(,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]].
* 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>).
* 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).
* 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>).
{{APL dialects}}[[Category:Flat array languages]]

Navigation menu