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 to object.

Example
  Use R ::= QQ[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]
-------------------------------