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.