up previous next
4.5.1 Introduction to Records
A record is a data type in CoCoA representing a list of bindings of the form name --> object.

Example
Use R ::= Q[x,y,z];
P := Record[ I = Ideal(x,y^2-z), F = x^2 + y, Misc = [1,3,4]];
P.I;
Ideal(x, y^2 - z)
-------------------------------
P.F;
x^2 + y
-------------------------------
P.Misc;
[1, 3, 4]
-------------------------------
P.Misc[2];
3
-------------------------------
P.Date := "1/1/98";
P;
Record[Date = "1/1/98", F = x^2 + y, I = Ideal(x, y^2 - z), Misc = [1, 3, 4]]
-------------------------------
P["I"];  -- equivalent to P.I
Ideal(x, y^2 - z)
-------------------------------
P["Misc",3];  -- equivalent to P.Misc[3]
4
------------------------------- 
Each entry in a record is called a field. Note that records are open in the sense that their fields can be extended, as shown in the previous example. At present, there is no function for deleting fields from a record, one must rewrite the record, selecting the fields to retain:

Example
P := Record[A = 2, B = 3, C = 5, D = 7];
Q := Record[];

Foreach F In Fields(P) Do  
  If F <> "C" Then Q.Var(F) := P.Var(F) EndIf; -- "Q.F" would not work here
EndForeach;
P := Q;
Delete Q;  -- get rid of the variable Q

P;
 Record[A = 2, B = 3, D = 7]
-------------------------------