more about defstruct



Hello,

I've been tinkering with the defstruct code.

 defstruct (foo (a, b, c));
 x : new (foo);

x at a evaluates to x at a when field a is not bound to anything in particular.

 x at a;
   => x at a

Instances of structures defined by defstruct are displayed with
foo=bar notation in 2-d display. But 1-d output doesn't show
that because the equal sign is not recognized in input (and the
1-d output is supposed to be what could be input).

 x at a : 123;
 x at b : xyz;
 x;
   => foo(a = 123, b = xyz, c)
 grind (x);
   => foo(123,xyz,c)$

Individual fields in an instance can be killed.

 kill (x at a);
 x;
   => foo(a, b = xyz, c)

defstruct & kill maintain structures as an infolist (like functions or values).

 structures;
   => [foo(a, b, c)]
 kill (foo);
 structures;
   => []

I've committed changes to cvs for this stuff.
If you have any opinions for or against I would be interested
to hear about it.

HTH
Robert