Add tests to rtest_translator that involve if, is and maybe
[maxima.git] / tests / rtest_map.mac
blobf1f2ee45df601f29ab427194b582dd31080c2c4b
1 (kill(all),0);
2 0$
4 map(f, '(if x < 1 then 5 else 2));
5 '(if f(x < 1) then f(5) else f(2))$
7 fullmap(f, '(if x < 1 then 5 else 2));
8 '(if f(x) < f(1) then f(5) else f(2))$
10 /* The user documentation says that matrixmap returns a matrix. So
11 matrixmap(f,[6]) --> [f(6)] is wrong. */
13 errcatch(matrixmap(f, [6]));
14 []$
16 map('cos,[]);
17 []$
19 map('cos, matrix());
20 matrix()$
22 map('exp, set());
23 set()$
25 map(f, set(a,b));
26 set(f(a),f(b))$
28 map(lambda([x],x^2), set(-1,1));
29 set(1)$
31 errcatch(map(f, false));
32 []$
34 map(f[1], []);
35 []$
37 map(f[q], [2]);
38 [f[q](2)]$
40 map(f[5],[1,2,inf]);
41 [f[5](1), f[5](2), f[5](inf)]$
43 errcatch(map(f, 1.5b0));
44 []$
46 map('cos, [0]);
47 [1]$
49 map(lambda([x], x^2), []);
50 []$
52 map(f, [[]]);
53 [f([])]$
55 map(f, [false]);
56 [f(false)]$
58 map(f, [[false]]);
59 [f([false])]$
61 map(f, [2,[2]]);
62 [f(2), f([2])]$
64 map(f,[a],[b],[c]);
65 [f(a,b,c)]$
67 map(f,[a],[b],[c,b]), maperror : false;
68 [f(a,b,c)]$
70 map(lambda([a,b], is(a < b)), [],[]);
71 []$
73 map(lambda([a,b], is(a < b)), [1],[2]);
74 [true]$
76 map(lambda([a,b], is(a < b)), [x],[x+1]);
77 [true]$
79 errcatch(map(lambda([a,b], is(a < b)), [x],[x+1],[x+2]));
80 []$
82 map("=",[a,b],[1,2]);
83 [a=1,b=2]$
85 map("#",[a,b],[1,2]);
86 [a # 1,b # 2]$
88 map(f,-x);
89 -f(x)$
91 map(f,a+b);
92 f(a) + f(b)$
94 map(f,a-b);
95 f(a) + f(-b)$
97 map(f, rat(a+b));
98 f(a) + f(b)$
100 map(f, a+b*c);
101 f(a) + f(b*c)$
103 map(f, a^b);
104 f(a)^f(b)$
106 map(f, a^(b^c));
107 f(a)^f(b^c)$
109 map(f,a*b*c);
110 f(a) * f(b) * f(c)$
112 map(f, a/b);
113 f(a) / f(b)$
115 map(f, dpart(a*b*c,1));
116 ''(dpart(f(a) * f(b) * f(c),1,1))$
118 errcatch(map(f,1));
121 map(f,[[[x]]]);
122 [f([[x]])]$
124 map(log, x < y);
125 log(x) < log(y)$
127 map(f, cfdisrep([1,2,3,4]));
128 f(1) + f(''(cfdisrep([0,2,3,4])))$
130 map('append, [[v]],[[t]]);
131 [[v,t]]$
133 map('first,[[u,1],[n,2],[k,3]]);
134 [u,n,k]$
136 map(f, a.b);
137 f(a) . f(b)$
139 map(f, a^^b);
140 f(a)^^f(b)$
142 map(j, j());
143 j()$
145 map(q,j());
146 j()$
148 map(q,j(m));
149 j(q(m))$
151 map(q,j(m()))$
152 j(q(m()))$
154 map(t,q(%pi));
155 q(t(%pi))$
157 fullmap('cos,[]);
160 fullmap('cos, matrix());
161 matrix()$
163 fullmap('exp, set());
164 set()$
166 fullmap(f, set(a,b));
167 set(f(a),f(b))$
169 fullmap(lambda([x],x^2), set(-1,1));
170 set(1)$
172 fullmap(f[1], []);
175 fullmap(f[q], [2]);
176 [f[q](2)]$
178 fullmap(f[5],[1,2,inf]);
179 [f[5](1), f[5](2), f[5](inf)]$
181 errcatch(fullmap(f, 1.5b0));
184 fullmap('cos, [0]);
185 [1]$
187 fullmap(lambda([x], x^2), []);
190 fullmap(f, [[]]);
191 [[]]$
193 fullmap(f, [false]);
194 [f(false)]$
196 fullmap(f, [[false]]);
197 [[f(false)]]$
199 fullmap(f, [2,[2]]);
200 [f(2), [f(2)]]$
202 fullmap(f,[a],[b],[c]);
203 [f(a,b,c)]$
205 fullmap(f,[a],[b],[c,b]), maperror : false;
206 [f(a,b,c)]$
208 fullmap(lambda([a,b], is(a < b)), [],[]);
211 fullmap(lambda([a,b], is(a < b)), [1],[2]);
212 [true]$
214 fullmap(lambda([a,b], is(a < b)), [x],[x+1]);
215 [true]$
217 errcatch(fullmap(lambda([a,b], is(a < b)), [x],[x+1],[x+2]));
220 fullmap("=",[a,b],[1,2]);
221 [a=1,b=2]$
223 fullmap("#",[a,b],[1,2]);
224 [a # 1,b # 2]$
226 fullmap(f,-x);
227 -f(x)$
229 fullmap(f,a+b);
230 f(a) + f(b)$
232 fullmap(f,a-b), inflag : true$
233 f(a) + f(-1) * f(b)$
235 fullmap(f,a-b), inflag : false$
236 f(a) - f(b)$
238 fullmap(f, rat(a+b));
239 f(a) + f(b)$
241 fullmap(f, a+b*c);
242 f(a) + f(b)*f(c)$
244 fullmap(f, a^b);
245 f(a)^f(b)$
247 fullmap(f, a^(b^c));
248 f(a)^(f(b)^f(c))$
250 fullmap(f,a*b*c);
251 f(a) * f(b) * f(c)$
253 fullmap(f, a/b);
254 f(a) / f(b)$
256 fullmap(f, dpart(a*b*c,1));
257 ''(dpart(f(a) * f(b) * f(c),1))$
259 errcatch(fullmap(f,1));
262 fullmap(f,[[[x]]]);
263 [[[f(x)]]]$
265 fullmap(log, x < y);
266 log(x) < log(y)$
268 fullmap(f, a.b);
269 f(a) . f(b)$
271 fullmap(f,a.b + b . a);
272 f(a) . f(b) + f(b) . f(a)$
274 fullmap(f, a^^b);
275 f(a)^^f(b)$
277 fullmap(f, a. (b .c ));
278 f(a) . (f(b) . f(c))$
280 fullmap(f, a^^(b^^c));
281 f(a)^^(f(b)^^f(c))$
283 matrixmap(f,matrix());
284 matrix()$
286 matrixmap(f, matrix([]));
287 matrix([])$
289 matrixmap(f, matrix([],[]));
290 matrix([],[])$
292 matrixmap(f, matrix([5]));
293 matrix([f(5)])$
295 matrixmap('cosh, matrix([a,b],[c,d]));
296 matrix([cosh(a), cosh(b)],[cosh(c), cosh(d)])$
298 matrixmap(lambda([x], x * ident(2)), matrix([1,2],[3,4]));
299 matrix([matrix([1,0],[0,1]),matrix([2,0],[0,2])],[matrix([3,0],[0,3]),matrix([4,0],[0,4])])$
301 /* SF bug 3241: f()(...) not same as "foo"(...) when f returns "foo" */
303 op(a + b)(1, 2);
306 /* other examples related to #3241 */
308 (prefix ("foo"),
309  fooval : "foo",
310  foofun() := "foo",
311  0);
314 map (fooval, [a, b, c]);
315 [foo a, foo b, foo c];
317 map (foofun(), [a, b, c]);
318 [foo a, foo b, foo c];
320 apply (fooval, [a]);
321 foo a;
323 apply (foofun(), [a]);
324 foo a;
326 funmake (fooval, [a]);
327 foo a;
329 funmake (foofun(), [a]);
330 foo a;
332 fooval(a);
333 foo a;
335 foofun()(a);
336 foo a;
338 (kill (bar, baralias),
339  alias (baralias, bar),
340  barval : 'bar,
341  barfun() := 'bar,
342  0);
345 map (barval, [a, b, c]);
346 [baralias(a), baralias(b), baralias(c)];
348 map (barfun(), [a, b, c]);
349 [baralias(a), baralias(b), baralias(c)];
351 apply (barval, [a]);
352 baralias(a);
354 apply (barfun(), [a]);
355 baralias(a);
357 funmake (barval, [a]);
358 baralias(a);
360 funmake (barfun(), [a]);
361 baralias(a);
363 barval(a);
364 baralias(a);
366 barfun()(a);
367 baralias(a);
369 /* bug reported to mailing list 2018-07-22: "mapatom(-4)" */
371 (kill (x), map (mapatom, [-1, 1/2, -1/2, -1.0, -1b0, 1, 1.0, 1b0, x[1]]));
372 [true, true, true, true, true, true, true, true, true];
374 (kill (f), errcatch (map (f, -1)));
377 errcatch (map (f, 1/2));
380 errcatch (map (f, -1/2));
383 errcatch (map (f, -1.0));
386 errcatch (map (f, -1b0));
389 errcatch (map (f, 1));
392 errcatch (map (f, 1.0));
395 errcatch (map (f, 1b0));
398 errcatch (map (f, x[1]));
401 (kill (a, b), map (mapatom, [-a, a/b, -a/b, x(1)]));
402 [false, false, false, false];
404 map (f, -a);
405 -f(a);
407 map (f, a/b);
408 f(a)/f(b);
410 map (f, -a/b);
411 -f(a/b);
413 map (f, x(1));
414 x(f(1));
416 /* Previously some atoms were not considered to be mapatoms.
417  * Mailing list 2020-06-05: "Non-mapatomic atoms"
418  */
420 (kill (a),
421  a : make_array (fixnum, 1),
422  0);
425 mapatom (a);
426 true;
428 errcatch (map (f, a));
431 (kill (a), 0);
434 /* Structure references are mapatoms.
435  * Mailing list 2020-06-05: "Non-mapatomic atoms"
436  */
438 (kill (f, s, x), 0);
441 mapatom (s@x);
442 true;
444 errcatch (map (f, s@x));
447 mapatom ('(s@x));
448 true;
450 errcatch (map (f, '(s@x)));