File: rtestdefstruct.mac

package info (click to toggle)
maxima 5.47.0-9
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 193,104 kB
  • sloc: lisp: 434,678; fortran: 14,665; tcl: 10,990; sh: 4,577; makefile: 2,763; ansic: 447; java: 328; python: 262; perl: 201; xml: 60; awk: 28; sed: 15; javascript: 2
file content (100 lines) | stat: -rw-r--r-- 1,760 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
kill (all);
done;

defstruct (mumble ());
[mumble ()];

f: new (mumble);
mumble ();

defstruct (bar (aa, bb), baz (aa), quux (aa));
[bar (aa, bb), baz (aa), quux (aa)];

defstruct (foo (aa, bb, cc = bar (2, 3), dd = baz (5), ee = quux (7)));
[foo (aa, bb, bar (2, 3), baz (5), quux (7))];

f: new (foo);
foo (aa, bb, bar (2, 3), baz (5), quux (7));

g: f@cc;
bar (2, 3);

g@bb: blurf (11);
blurf (11);

f;
foo (aa, bb, bar (2, blurf (11)), baz (5), quux (7));

g: new (''f);
foo (aa, bb, bar (2, blurf (11)), baz (5), quux (7));

g@bb: [1, 2, 3];
[1, 2, 3];

g;
foo (aa, [1, 2, 3], bar (2, blurf (11)), baz (5), quux (7));

f;
foo (aa, bb, bar (2, blurf (11)), baz (5), quux (7));

f@4@1: %pi - 3;
%pi - 3;

f;
foo (aa, bb, bar (2, blurf (11)), baz (%pi - 3), quux (7));

structures;
[mumble(), bar(aa, bb), baz(aa), quux(aa), foo(aa, bb, bar(2, 3), baz(5), quux(7))];

map (lambda ([a], ?get (op (a), ?defstruct\-template)), structures);
[mumble(), bar(aa, bb), baz(aa), quux(aa), foo(aa, bb, cc, dd, ee)];

kill (mumble, foo, bar, baz);
done;

errcatch (new (baz));
[];

structures;
[quux(aa)];

new (quux);
quux (aa);

/* begin stuff to test parallel multiple assignment */

[a, b, c]: [x, y, z];
[x, y, z];

[x, y, z]: [11, 22, 33];
[11, 22, 33];

[''a, ''b, ''c];
[11, 22, 33];

[x, y, z]: x*y*z;
[7986, 7986, 7986];

[x, y, z];
[7986, 7986, 7986];

[aa, bb]: [bb, 2*aa];
[bb, 2*aa];

([aa, bb]: [bb, 2*aa], [aa, bb]: [bb, 2*aa], [aa, bb]: [bb, 2*aa], [aa, bb]: [bb, 2*aa]);
[4*bb, 8*aa];

(kgcd (a, b) := (while b#0 do [a, b]: [b, remainder (a, b)], abs(a)), 0);
0;

kgcd (123456, 123);
''(gcd (123456, 123));

/* Error on atomic argument */
errcatch (defstruct (xx));
[];

/* Error on malformed record initializer */
errcatch (defstruct (xx (1)));
[];