1 04/11/77 2 3 This document lists the differences between the new version 4 2 APL, and the old Multics Version 1 APL (APL User's Guide, 5 Honeywell Order Number AK95, Revision 0). All page numbers refer 6 to the above manual. This document is intended for the user who 7 is converting workspaces from Version 1 to Version 2. It is not 8 intended to be a definition of Version 2 APL; indeed, only the 9 incompatible differences are listed here. A complete description 10 of Version 2 APL may be found in the revised edition of the 11 Multics APL manual, AK95-1. A summary of Version 2 APL may be 12 found in apl.summary.info. 13 14 In general, the language implemented by Version 2 APL is a 15 superset of Version 1 APL. One caveat should be noted, however. 16 Different algorithms have often been used to make Version 2 APL 17 faster than Version 1 APL. Thus, the exact values returned by 18 the trigonometric, matrix inversion, and similar operators may be 19 different in Version 2. 20 21 22 SECTION I. 23 24 No changes. 25 26 27 SECTION II. 28 29 1. The apl command (page 2-1) now takes arguments, whereas old 30 apl ignored any arguments given on the command line. 31 32 2. The internal character set (page 2-2) has been slightly 33 modified. The following APL graphics have been given new 34 codes, and the old codes restored to their ASCII graphic: 35 G^H__^Hr_^Ha_^Hp_^Hh_^Hi_^Hc O^H__^Hl_^Hd C^H__^Ho_^Hd_^He N^H__^He_^Hw C^H__^Ho_^Hd_^He 36 dieresis 042 245 37 omega 043 246 38 iota 044 247 39 rho 045 250 40 times 046 251 41 alpha 100 252 42 upper minus 136 253 (now called overbar) 43 nabla 140 254 (now called del) 44 left arrow 173 255 45 right arrow 175 256 46 47 3. The typing conventions for ASCII terminals has changed 48 drastically (p. 2-3). Old apl used mnemonics, new apl uses 49 overstrikes. 50 51 4. Some of the exact rules for canonicalization (p. 2-4) have 52 changed. It is now possible to erase a kill character by 53 overstriking the two. 54 55 5. The details of APL input line processing (p. 2-6) have 56 changed. In general, such detail is unimportant to the apl 57 user. 58 59 6. The handling of the QUIT, or ATTN button, (p. 2-8) is 60 different in new apl. New apl conforms more closely to the 61 usage in other apl implementations. In particular, it is no 62 longer possible to exit apl by pressing the ATTN button; 63 only the )QUIT, )OFF, or )CONTINUE system commands will exit 64 apl. 65 66 67 SECTION III. 68 69 1. The internal implementation of type (p. 3-2) has changed. 70 Old apl subdivided numeric values into bit, integer, or 71 double-precision floating-point. The amount of storage 72 occupied by a numeric value depended upon its type (although 73 the apl user was hard-pressed to see any difference between 74 the three types). New apl stores all numeric values as 75 double-precision floating-point numbers. A type field is 76 maintained by new apl to indicate which floating-point 77 numbers are known to be bits or integers, for efficiency. 78 79 2. The exact representation of printed numeric values (p. 3-3) 80 has changed. Matricies of non-negative values now omit the 81 column formerly reserved for the sign. 82 83 3. The definition of the modulo operator (p. 3-11) has changed. 84 Modulo is now defined consistently for negative or zero left 85 arguments. New apl calls this operator "residue", to be 86 consistent with other implementations. 87 88 4. The definition of "fuzz" has changed in new apl ("fuzz" is 89 now called the comparison tolerance). Thus, the exact 90 operation of the operators that depend on fuzz has changed 91 slightly. Most users should not notice this change. 92 93 5. The exact definition of ceiling and floor (p. 3-12) has 94 changed because they depend on the comparison tolerance. 95 96 6. The sequence of values produced by the random number operator 97 (p. 3-13) has changed. This operator now returns the same 98 sequence of random numbers as APL\360. The SETLINK library 99 function and the )SETLINK system command have been replaced 100 by the quad-RL system variable. 101 102 7. The exact definition of the comparison operators (p. 3-14) 103 has changed because they depend on the comparison tolerance. 104 105 8. The exact definition of the logical operators (p. 3-15) has 106 changed because they depend on the comparison tolerance. 107 108 9. The trigonometric operators (p. 3-16) have been changed to 109 use the same algorithms as the Multics PL/I, FORTRAN, and 110 BASIC compilers. This change makes new apl more consistent 111 with the other Multics languages. No loss of accuracy should 112 be noticed. 113 114 10. The definition of monadic transpose (p. 3-25) has changed. 115 Old apl transposed the last two dimensions; new apl 116 transposes all the dimensions. Many apl examples in old 117 textbooks rely on the old definition; before you report a 118 bug in the new apl, check for problems with monadic 119 transpose. 120 121 11. Since the definition of the encode operator (p. 3-29) depends 122 of the definition of modulo, it also changes (see modulo, 123 above). 124 125 12. The results returned by the deal operator (p. 3-30) are now 126 identical to those returned by APL\360. 127 128 13. The definition of various i-beam functions (p. 3-32) has 129 changed. (to be supplied). 130 131 14. The new function editor is completely different from the old 132 function editor (p. 3-49 examples). 133 134 15. The comments about dependence upon unspecified ordering of 135 evaluation (p. 3-51) are just as true for new apl as it is 136 for old apl. Version 2's order of evaluation is different 137 from Version 1's. Since the APL language prohibits 138 dependence upon order of evaluation, no legal APL program 139 should be affected by this change. However, since neither 140 Version 1 nor Version 2 enforces this restriction, it is up 141 to the user to write correct programs. 142 143 16. Not all of the library functions (p. 3-64) are available in 144 version 2 apl. The SETLINK, SFCI, SFEI, SFII, and FUZZ 145 functions are not available. 146 147 17. The exact positioning of the error marker, and the character 148 that is the error marker, are different in new apl. New apl 149 uses a caret (and-sign) rather than the vertical bar. The 150 comments on page 3-68 about which streams are used for 151 reading and writing after an error do not apply to new apl. 152 153 18. New apl causes a SYSTEM ERROR rather than a "panic" (p. 154 3-74). The workspace may or may not be in a consistent state 155 after such an error. Users should proceed with caution. 156 157 158 SECTION IV. 159 160 1. The )FUZZ system command (p. 4-6) has been replaced by the 161 comparison tolerance system variable, quad-CT. 162 163 2. The )SETLINK system command (p. 4-7) has been replaced by the 164 random link system variable, quad-RL. 165 166 3. The )SFII, )SFEI, and )SFCI system commands (p. 4-8) are not 167 available in new apl. 168 169 4. The suffix appended to the entryname of a saved apl workspace 170 (p. 4-18) has been changed from ".apl" to ".sv.apl". 171 172 5. The )CONTINUE system command now names the workpace 173 Person_id.sv.apl, and places it in the user's home directory 174 (p. 4-25). 175 176 6. The )LIB system command (p. 4-26) no longer calls the "list" 177 command directly. 178 179 7. Version 2 is able to copy a Version 1 workspace using its 180 )V1COPY and )V1PCOPY system commands. Their syntax is 181 identical to the normal )COPY and )PCOPY, the only difference 182 is that they know how to find, and then convert, Version 1 183 workspaces to the Version 2 format. There is no way to )LOAD 184 a Version 1 workspace, it must be copied. These commands 185 automatically translate old character codes into the proper 186 new codes (point #1, above). The )V1LIB and )V1DROP commands 187 may be used to list and delete Version 1 worskpaces, 188 respectively. 189 190 8. The calling sequence for external functions (p. 4-29ff) has 191 changed. See apl_external_fcns.runout. 192 193 194 SECTION V. 195 196 The Version 2 editor is completely different from the Version 197 1 editor. Version 1 used an editor that was similar to edm. 198 Version 2 uses an editor that is identical to the APL editor 199 used in APL\360 and APLSV. The edm-like editor is no longer 200 supported. 201 202 203 SECTION VI. 204 205 This section is a sample terminal session of Version 1 APL. 206 Most of the examples will work as shown is Version 2, but 207 some (such as EPI on p. 6-10) rely on features that have 208 changed from Version 1 to Version 2 APL. 209 210 211 SECTION VII. 212 213 This section is a comparison of Version 1 APL with APL\360. 214 For a comparison of Version 2 APL with APL\260, refer to 215 apl_vs_aplsv.incompat.info and apl_vs_aplsv.extensions.info.