1 11/22/83  Summary of APL features
  2 
  3 This document summarizes the features available in Multics APL.  APL
  4 characters are represented here using the same typing conventions as
  5 for ASCII terminals.  See the "ASCII character set" section for more
  6 information.
  7 
  8 
  9 Terminals supported: All EBCDIC terminals at 134.5 baud, all
 10 Correspondence terminals at 134.5 baud, all bit-paired APL/ASCII
 11 terminals at any baud, all typewriter-paired APL/ASCII terminals at
 12 any baud, all full ASCII terminals at any baud (using a special
 13 character set).  Uppercase-only ASCII terminals are not supported.
 14 
 15 
 16 ASCII character set: On full (96 character) ASCII terminals, APL uses
 17 a special mapping between ASCII characters and APL characters.
 18 Uppercase alphabetic letters represent APL letters, underscored
 19 uppercase alphabetic letters represent underscored APL letters, digits
 20 represent themselves, a circumflex (^) represents the negative sign,
 21 and a single quote (') represents the APL quote character.  Lowercase
 22 alphabetic letters, and punctuation characters, represent APL
 23 operators.  All APL characters can be formed by one or two
 24 (overstruck) ASCII characters.  See the following sections for a
 25 complete list of operators.
 26 
 27 
 28 Correction of typing errors: On EBCDIC and Correspondence terminals,
 29 the "backspace-attention" convention can be used.  On all terminals,
 30 the regular Multics erase-kill convention can be used.  The kill
 31 character is the alpha ("a" on ASCII terminals), and the erase
 32 character is the omega ("w" on ASCII terminals).  On ASCII terminals,
 33 at-sign (@) and number sign (#) can also be used.  The escape
 34 character is the dieresis (double-quote on ASCII terminals).
 35 
 36 
 37 Monadic scalar operators:
 38 + (no operation)              * (power of e)
 39 - (negate)                    *^Ho (logarithm base e)
 40 x (signum)                    | (absolute value)
 41 -^H: (invert)                 ! (factorial)
 42 c (ceiling)                   o (pi times)
 43 f (floor)
 44 
 45 
 46 Dyadic scalar operators:
 47 + (plus)                      o (trigonometric)
 48 - (minus)                     & (and)
 49 x (times)                     v (or)
 50 -^H: (divide)                 &^H~ (nand)
 51 c (max)                       v^H~ (nor)
 52 f (min)                       /^H= (not equal)
 53 * (exponentiate)              = (equal)
 54 *^Ho (logarithm)              <^H_ (less or equal)
 55 | (residue)                   > (greater)
 56 ! (combinations)              >^H_ (greater or equal)
 57 
 58 
 59 Monadic mixed operators:
 60 ~ (not)                       -^Ho (reverse-first)
 61 p (shape)                     \^Ho (transpose)
 62 , (ravel)                     b (i-beam)
 63 i (iota)                      ? (roll)
 64 d^H| (grade up)               m (matrix invert)
 65 g^H| (grade down)             _^Hf (format)
 66 o^H| (reverse-last)
 67 
 68 
 69 Dyadic mixed operators:
 70 p (reshape)                   o^H| (rotate-last)
 71 , (catenate/laminate)         -^Ho (rotate-first)
 72 ,^H- (catenate-first)                   \^Ho (transpose)
 73 i (index)                     e (membership)
 74 ^^H| (take)                             _^H| (decode)
 75 v^H| (drop)                             t (encode)
 76 / (compress-last)             ? (deal)
 77 -^H/ (compress-first)                   m (domino)
 78 \ (expand-last)               _^Hf (format)
 79 -^H\ (expand-first)
 80 
 81 
 82 Primitive operations:
 83 +/ (reduction-last)
 84 +-^H/ (reduction-first)
 85 +\ (scan-last)
 86 +-^H\ (scan-first)
 87 +.x (inner product)
 88 _^Ho.+ (outer product)
 89 
 90 Any of the scalar operators may participate in these operations
 91 including the trigonometric operator.
 92 
 93 
 94 Pseudo-operations:
 95 -^H> (branch)
 96 -^H< (assignment)
 97 A[...] (subscripting)
 98 A[...]-^H< (subscripted assignment)
 99 _^He (execute)
100 SdFCN (stop control)
101 TdFCN (trace control)
102 q (quad)
103 '^Hq (quote-quad)
104 
105 
106 Editor requests:
107 g         del character
108 g^H~      locked del character
109 gZ-^H<A FCN B;C;D   typical function header for new function
110 gFCN      typical editor invocation for old function
111 [q]       list whole function
112 [Nq]      list line N
113 [qN]      list from line N to end
114 [N]       retype line N
115 [NqM]     detailed-edit line N starting in column M
116 [dN]      delete line N
117 TEXT...   enter text for prompted line
118 
119 
120 When a function is closed, a syntax check is made of the entire function.  If
121 any errors are discovered, they are printed, and the user remains in the
122 editor.  If the function was locked, it is unlocked.  The user can immediately
123 type another "g" to exit (the editing will be lost), or may fix the errors and
124 type "g" to have it checked again.
125 
126 
127 System variables:
128 qCT (comparison tolerance)    qLC (line counter)
129 qIO (index origin)            qTS (time stamp)
130 qLX (latent expression)       qTT (terminal type)
131 qPP (printing precision)      qUL (user load)
132 qPW (printing width)          qWA (workspace avail)
133 qRL (random link)             qCS (character set)
134 qAI (accounting info)         qWU (workspace used)
135 qIT (integer tolerance)
136 
137 
138 System functions:
139 qAF (evaluate active function)          qEX (expunge)
140 qCR (canonical representation)          qFX (fix)
141 qCALL (external call)                   qNC (name count)
142 qDL (delay)                             qNL (name list)
143 qEC (execute command)
144 
145 
146 File system functions:
147 qFADDACL            qFLIB               qFRENAME
148 qFAPPEND            qFLIM               qFREPLACE
149 qFCREATE            qFLISTACL           qFSETACL
150 qFDELETEACL         qFNAMES             qFSIZE
151 qFDROP              qFNUMS              qFSTIE
152 qFERASE             qFRDCI              qFTIE
153 qFHOLD              qFREAD              qFUNTIE
154 
155 
156 System commands:
157 )R           prints Multics ready message
158 )Q, )QUIT    leaves apl
159 )E, )EXEC    executes rest of line as Multics command
160 )ERRS        prints state of error mode
161 )ERRS LONG   changes error mode to long
162 )ERRS BRIEF  changes error mode to brief (default)
163 )DEBUG       prints state of debug mode
164 )DEBUG ON    changes debug mode to on
165 )DEBUG OFF   changes debug mode to off (default)
166 )VARS        lists global variables
167 )GRPS        lists groups
168 )FNS         lists functions
169 )DIGITS      prints printing precision setting
170 )DIGITS N    changes printing precision setting to N
171 
172 
173 )ORIGIN      prints index origin
174 )ORIGIN N    changes origin setting to N (default is 1)
175 )WIDTH       prints printing width
176 )WIDTH N     changes printing width to N (default is line length of terminal)
177 )CLEAR       clears workspace
178 )SINL, )SIV  lists state indicator and local variables
179 )SI          lists state indicator
180 )SAVE        saves active workspace
181 )SAVE WSID   save active workspace as WSID
182 )LOAD        loads workspace of same name as active workspace
183 )LOAD WSID   loads workspace named WSID
184 )WSID        prints workspace identifier
185 )WSID ID     changes workspace identifier to ID (default is CLEAR WS)
186 
187 
188 )CHECK       prints state of compatibility check mode
189 )CHECK ON    changes compatibility check mode to on
190 )CHECK OFF   changes compatibility check mode to off (default)
191 )HELP XXX    calls Multics help command with rest of line
192 )HUH         reprints last error message in long error mode
193 )OFF         exits from apl
194 )OFF HOLD    exits from apl, does not logout in subsystem environment
195 )CONTINUE    saves a continue workspace (User_id.sv.apl) and exits
196              from apl
197 )ERASE X     erases the current value of the name X
198 )COPY WSID   copies the variables, functions, and groups in WSID into
199              active workspace
200 )COPY WSID X...   copies the named objects into active workspace
201 )PCOPY       like copy, but does not overwrite objects of same name in
202              active workspace
203 
204 
205 )GROUP G A...   forms new group G from names on rest of line
206 )GRP G       lists members of group G
207 )MSG, )MSG ON   calls immediate_messages
208 )MSG OFF     calls defer_messages
209 )MSG XXX     passes rest of line to send_message
210 )LIB         lists workspaces in working directory
211 )LIB N       lists workspaces in library N
212 )LIB PATH    lists workspaces in directory named by PATH
213 )ZFN FN RN   defines FN to be a niladic external function, RN is the
214              reference name of the program to call
215 )MFN FN RN   defines FN to be a monadic external function, RN is the
216              reference name of the program to call
217 )DFN FN RN   defines FN to be a dyadic external function, RN is the
218              reference name of the program to call
219 )EFNS        lists functions previously defined by )ZFN, )MFN, or )DFN
220 
221 
222 )LIBD        like )LIB, but include date-time saved and date-time used
223 )DROP WSID   delete workspace named by WSID
224 )PORTS       calls who
225 )METER       prints state of metering mode
226 )METER ON    changes metering mode to on
227 )METER OFF   changes metering mode to off (default)
228 )V1DROP      like )DROP, but for version 1 apl workspaces
229 )V1COPY      like )COPY, but for version 1 apl workspaces
230 )V1PCOPY     like )PCOPY, but for version 1 apl workspaces
231 )V1LIB       like )LIB, but for version 1 apl workspaces
232 )TABS        prints current tab width (default is 10)
233 )TABS N      changes tab width to N
234 )SYMBOLS     prints number of symbols in active workspace
235 )VERSION     prints version number of apl
236 )?           prints the names of all of the system commands