Updated testsuite with an expected GCL error in to_poly_share
[maxima.git] / doc / implementation / sloop-loop-changes.txt
blobc32ca9bfa3a1d610852fd2515eff66d88c04b40a
1 Ole Rohne contributed the changes necessary to replace the use of
2 sloop in the main maxima code with loop. The changes are summarized
3 here. (The actual replacement of "sloop" with "loop" is not included
4 in the diffs below.)
6 This list of changes serves both to document what happened and to
7 serve as a guide for removing sloop usage from the share packages.
9 --JFA
11 1) many changes of the form "by 'foo" -> "by #'foo", e.g.,
13  (sloop for (x y) on 
14         '(%cot %tan %csc %sin %sec %cos %coth %tanh %csch %sinh %sech %cosh)
15 -       by 'cddr do (putprop x y 'recip) (putprop y x 'recip))
16 +       by #'cddr do (putprop x y 'recip) (putprop y x 'recip))
18 2) in-array becomes across
20 3) loop-return becomes return
22 4) delete nleft, leading to
24  (defun listify1 (n narg-rest-argument)
25 -  (cond ((minusp n) (copy-list (nleft (f- n) narg-rest-argument)) )
26 +  (cond ((minusp n) (copy-list (last narg-rest-argument (f- n))) )
27         ((zerop n) nil)
28         (t (firstn n narg-rest-argument))))
31 5) in-table becomes something more complicated, e.g.,
33 -                         (sloop for (u v)
34 -                                in-table arra
35 +                         (sloop for u being the hash-keys in arra using (hash-value v)
37 6) this one:
39      ,@(sloop for v in decl-specs
40 -            unless (member (car v) '(special unspecial)) do nil 
41 +            unless (member (car v) '(special unspecial)) nconc nil
43 7) delete nodeclare, e.g.,
45                   (sloop for i from lis to top
46 -                        nodeclare t
47                          do (set var1 i)
48                          append
49                          (apply 'create-list1
51 8) Fix package exports, shadows, etc:
53  (defpackage "CL-SLOOP"
54    (:use "COMMON-LISP")
55 -  (:shadow "LOOP-FINISH")
56 -  (:export "LOOP-RETURN" "SLOOP" "DEF-LOOP-COLLECT" "DEF-LOOP-MAP"
57 -          "DEF-LOOP-FOR" "DEF-LOOP-MACRO" "LOCAL-FINISH" "LOOP-FINISH"))
58 +  (:export "SLOOP"))
60  (defpackage "MAXIMA"
61    (:use "COMMON-LISP" "COMMAND-LINE")
62    (:nicknames "CL-MACSYMA" "CL-MAXIMA" "MACSYMA")
63 -  (:shadowing-import-from "CL-SLOOP" "LOOP-FINISH")
64 -  (:import-from "CL-SLOOP" "LOOP-RETURN" "LOCAL-FINISH" "SLOOP")
65 +  (:import-from "CL-SLOOP" "SLOOP")
67 9) in-package -> being the symbols of, e.g.,
69 -        (sloop for vv in-package 'keyword
70 +        (sloop for vv being the symbols of 'keyword
72 10) change declarations, e.g.,
74 -          (sloop for i below 3 with a = 0.0
75 -                 declare (double-float a)
76 +          (sloop for i below 3 with a of-type double-float = 0.0