up previous next
3.7.8 Printing a Tagged Object
Suppose the object E is tagged with the string S. When one tries to print E---say with Print E or just E;--- CoCoA looks for a user-defined function with name Print_S. If no such function is available, CoCoA prints E as if it were not tagged, otherwise, it executes Print_S.

Example
  L := ["Dave","March 14, 1959",372];  -- continuing with the previous example
  M := Tagged(L,"MiscData");
  M; -- M is printed as normal in the absence of a function "Print_MiscData"
["Dave", "March 14, 1959", 372]
-------------------------------
  Define Print_MiscData(X) -- Exactly one parameter is required.
    M := Untagged(X);
    Print M[1];
  EndDefine;
  Print M; -- Now, any object tagged with the string "MiscData" will be
     -- printed using Print_MiscData
Dave
-------------------------------
  M;  -- Whenever printing of M is called for, "Print_MiscData" is executed.
Dave
-------------------------------
The line M := Untagged(X) is actually not necessary here, but in general one may get into an infinite loop trying to print X, a tagged object, from within the function that is being defined in order to print X, if that makes sense. Untagging X prevents this problem.