11/22/83 Summary of APL features This document summarizes the features available in Multics APL. APL characters are represented here using the same typing conventions as for ASCII terminals. See the "ASCII character set" section for more information. Terminals supported: All EBCDIC terminals at 134.5 baud, all Correspondence terminals at 134.5 baud, all bit-paired APL/ASCII terminals at any baud, all typewriter-paired APL/ASCII terminals at any baud, all full ASCII terminals at any baud (using a special character set). Uppercase-only ASCII terminals are not supported. ASCII character set: On full (96 character) ASCII terminals, APL uses a special mapping between ASCII characters and APL characters. Uppercase alphabetic letters represent APL letters, underscored uppercase alphabetic letters represent underscored APL letters, digits represent themselves, a circumflex (^) represents the negative sign, and a single quote (') represents the APL quote character. Lowercase alphabetic letters, and punctuation characters, represent APL operators. All APL characters can be formed by one or two (overstruck) ASCII characters. See the following sections for a complete list of operators. Correction of typing errors: On EBCDIC and Correspondence terminals, the "backspace-attention" convention can be used. On all terminals, the regular Multics erase-kill convention can be used. The kill character is the alpha ("a" on ASCII terminals), and the erase character is the omega ("w" on ASCII terminals). On ASCII terminals, at-sign (@) and number sign (#) can also be used. The escape character is the dieresis (double-quote on ASCII terminals). Monadic scalar operators: + (no operation) * (power of e) - (negate) *o (logarithm base e) x (signum) | (absolute value) -: (invert) ! (factorial) c (ceiling) o (pi times) f (floor) Dyadic scalar operators: + (plus) o (trigonometric) - (minus) & (and) x (times) v (or) -: (divide) &~ (nand) c (max) v~ (nor) f (min) /= (not equal) * (exponentiate) = (equal) *o (logarithm) <_ (less or equal) | (residue) > (greater) ! (combinations) >_ (greater or equal) Monadic mixed operators: ~ (not) -o (reverse-first) p (shape) \o (transpose) , (ravel) b (i-beam) i (iota) ? (roll) d| (grade up) m (matrix invert) g| (grade down) _f (format) o| (reverse-last) Dyadic mixed operators: p (reshape) o| (rotate-last) , (catenate/laminate) -o (rotate-first) ,- (catenate-first) \o (transpose) i (index) e (membership) ^| (take) _| (decode) v| (drop) t (encode) / (compress-last) ? (deal) -/ (compress-first) m (domino) \ (expand-last) _f (format) -\ (expand-first) Primitive operations: +/ (reduction-last) +-/ (reduction-first) +\ (scan-last) +-\ (scan-first) +.x (inner product) _o.+ (outer product) Any of the scalar operators may participate in these operations including the trigonometric operator. Pseudo-operations: -> (branch) -< (assignment) A[...] (subscripting) A[...]-< (subscripted assignment) _e (execute) SdFCN (stop control) TdFCN (trace control) q (quad) 'q (quote-quad) Editor requests: g del character g~ locked del character gZ-