APL/700: Difference between revisions
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 = | | numeric types = 48-bit float | ||
| unicode support = no | | unicode support = no | ||
| 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 | '''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> | * 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>{∧/(, | * 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 | * 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 | ** <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
- ↑ Burroughs Corporation. User Reference Manual (5000813). 1975.
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 |