Support RETURN-FROM in DEF%TR forms
[maxima.git] / share / contrib / namespaces / rtest_namespaces.mac
blobede674438a5879884dae4a91781c5561068f417b
1 kill(all);
2 done;
4 (if maxima = 'maxima then load (namespaces), 0);
5 0;
7 maxima;
8 ''(?find\-package ("MAXIMA"));
10 load_namespace (foo);
11 true;
13 foo;
14 ''(?find\-package ("$FOO"));
16 namespaces;
17 '[foo];
19 symbols (foo);
20 [foo|f, foo|g, foo|hh, foo|my_constant];
22 external_symbols (foo);
23 [foo|f, foo|g];
25 functions;
26 [foo|f(foo|x), foo|g(foo|n), foo|hh(foo|z)];
28 values;
29 [foo|my_constant];
31 foo|my_constant;
32 1729;
34 string ('foo|my_constant);
35 "foo|my_constant";
37 ('foo|my_constant, ev (%%));
38 1729;
40 (my_constant : 1729, [is (my_constant = foo|my_constant), is ('my_constant = 'foo|my_constant)]);
41 [true, false];
43 (my_constant : 1 - %pi, is (my_constant = foo|my_constant));
44 false;
46 (hh(x) := (1/2) * x^2, 0);
49 import (foo);
50 [[foo|f, foo|g]];
52 map (fundef, [f, g, hh, foo|hh]);
53 [foo|f(foo|x) := foo|my_constant*sin(foo|x),
54  foo|g(foo|n) := expand ((foo|f(foo|a) + foo|n!)^foo|n),
55  hh(x) := 1/2*x^2,
56  foo|hh(foo|z) := foo|f(foo|z) - foo|g(2)];
58 f(%pi/4);
59 1729/sqrt(2);
61 g(3);
62 5168743489*sin(foo|a)^3 + 53809938*sin(foo|a)^2 + 186732*sin(foo|a) + 216;
64 hh(u - v);
65 (u - v)^2/2;
67 foo|hh(u - v);
68 -1729*sin(v - u) - 2989441*sin(foo|a)^2 - 6916*sin(foo|a) - 4;
70 kill (foo|hh);
71 done;
73 foo|hh(u - v);
74 '(foo|hh(u - v));
76 hh(u - v);
77 (u - v)^2/2;
79 in_namespace (aa);
80 ''(?find\-package ("$AA"));
82 x_aa : y_aa + z_aa;
83 y_aa + z_aa;
85 (f_aa (p, q) := (q - p)/x_aa, 0);
88 my_constant;
89 'my_constant;
91 maxima|my_constant;
92 1 - maxima|%pi;
94 maxima|my_constant, numer;
95 - 2.141592653589793;
97 maxima|foo|my_constant;
98 1729;
100 in_namespace (bb);
101 ''(?find\-package ("$BB"));
103 x_bb : sin(y_bb);
104 sin(y_bb);
106 (f_bb (r) := exp(r) - 1, [lhs (%%), rhs (%%)]);
107 [f_bb(r), maxima|exp(r) - 1];
109 in_namespace (cc);
110 ''(?find\-package ("$CC"));
112 x_cc : maxima|foo|my_constant - maxima|my_constant;
113 %pi + 1728;
115 x_cc, numer;
116 1731.14159265359;
118 (f_cc (s, t) := x_cc * s / t, [lhs (%%), rhs (%%)]);
119 [f_cc(s, t), x_cc * s / t];
121 in_namespace (maxima);
122 ''(?find\-package ("MAXIMA"));
124 in_namespace ();
125 ''(?find\-package ("MAXIMA"));
127 aa|bb|cc|f_cc (aa|x_aa, aa|bb|x_bb);
128 (%pi + 1728)*(aa|z_aa + aa|y_aa)/sin(aa|bb|y_bb);
130 in_namespace (xx);
131 ''(?find\-package ("$XX"));
133 in_namespace (yy);
134 ''(?find\-package ("$YY"));
136 in_namespace (zz);
137 ''(?find\-package ("$ZZ"));
139 (abc : 7654,
140  fgh (xyz) := xyz^abc,
141  pqr : fgh (uvw));
142 uvw^7654;
144 export (abc, fgh);
145 [true, true];
147 in_namespace ();
148 ''(?find\-package ("$ZZ"));
150 in_namespace (maxima);
151 ''(?find\-package ("MAXIMA"));
153 [xx, xx|yy, xx|yy|zz];
154 ''([?find\-package ("$XX"), ?find\-package ("$YY"), ?find\-package ("$ZZ")]);
156 [xx|yy|zz|abc, xx|yy|zz|pqr];
157 [7654, xx|yy|zz|uvw^7654];
159 (fundef (xx|yy|zz|fgh), [lhs (%%), rhs (%%)]);
160 [xx|yy|zz|fgh (xx|yy|zz|xyz), xx|yy|zz|xyz^xx|yy|zz|abc];
162 in_namespace (maxima|xx|yy|zz);
163 ''(?find\-package ("$ZZ"));
165 abc;
166 7654;
168 in_namespace (maxima|xx|yy);
169 ''(?find\-package ("$YY"));
171 zz|abc;
172 7654;
174 in_namespace (maxima|xx);
175 ''(?find\-package ("$XX"));
177 yy|zz|abc;
178 7654;
180 namespaces;
181 [maxima|foo, maxima|aa, maxima|aa|bb, maxima|aa|bb|cc, maxima|xx, maxima|xx|yy, maxima|xx|yy|zz];
183 in_namespace (maxima);
184 ''(?find\-package ("MAXIMA"));
186 namespaces;
187 [foo, aa, aa|bb, aa|bb|cc, xx, xx|yy, xx|yy|zz];
189 import (xx|yy|zz);
190 [[xx|yy|zz|abc, xx|yy|zz|fgh]];
192 abc;
193 7654;
195 fgh;
196 xx|yy|zz|fgh;
198 /* verify that keywords are recognized */
200 in_namespace (maxima|xx|yy);
201 ''(?find\-package ("$YY"));
203 if true then 1 elseif false then -1 else 0;
206 if false then 1 elseif true then -1 else 0;
209 for x in [1, 2, 3] do x;
210 done;
212 for i:1 thru 10 do i;
213 done;
215 /* verify that operators are recognized */
217 6 + 3;
220 6 - 2;
226 2^3;
229 2*5;
232 10/2;
235 true and false;
236 false;
238 false or true;
239 true;
241 not false;
242 true;
244 is (1 > 0);
245 true;
247 is (1 = 0);
248 false;
250 is (1 # 0);
251 true;
253 is (equal (x, (x^2 + x)/(x + 1)));
254 true;
256 is (notequal (x, (x^2 + x)/(x + 1)));
257 false;
259 is (notequal (x, y));
260 unknown;
262 (defstruct (foo (a=1, b=2)), new (foo), [%%@a, %%@b]);
263 [1, 2];
265 in_namespace (maxima);
266 ''(?find\-package ("MAXIMA"));