GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
LoadPackage( "ToolsForHomalg" );
DeclareCategory( "IsToDoListTestObject",
IsObject );
DeclareRepresentation( "IsToDoListTestObjectRep",
IsToDoListTestObject and IsAttributeStoringRep,
[ ] );
BindGlobal( "TheFamilyOfToDoListTestObjects",
NewFamily( "TheFamilyOfToDoListTestObjects" ) );
BindGlobal( "TheTypeToDoListTestObject",
NewType( TheFamilyOfToDoListTestObjects,
IsToDoListTestObjectRep ) );
DeclareOperation( "ToDoListTestObject",
[ IsString ] );
DeclareOperation( "ToDoListTestObject",
[ IsString, IsToDoListTestObject ] );
DeclareProperty( "IsTypeA",
IsToDoListTestObject );
DeclareProperty( "IsTypeB",
IsToDoListTestObject );
##
InstallMethod( ToDoListTestObject,
"without arguments",
[ IsString ],
function( nam )
local obj;
obj := rec( name := nam );
ObjectifyWithAttributes( obj, TheTypeToDoListTestObject );
return obj;
end );
##
InstallMethod( ToDoListTestObject,
"without arguments",
[ IsString, IsToDoListTestObject ],
function( nam, parent )
local obj;
obj := rec( name := nam );
ObjectifyWithAttributes( obj, TheTypeToDoListTestObject );
AddToToDoList( ToDoListEntry( [ [ parent, "IsTypeA", true ] ], obj, "IsTypeA", true ) );
return obj;
end );
##
InstallMethod( ViewObj,
"for test obj",
[ IsToDoListTestObject ],
function( obj )
Print( Concatenation( "<", obj!.name, ">" ) );
end );
##
InstallMethod( Display,
"for test obj",
[ IsToDoListTestObject ],
function( obj )
Print( Concatenation( obj!.name, ".\n" ) );
end );
##
InstallMethod( PrintObj,
"for test obj",
[ IsToDoListTestObject ],
function( obj )
Print( obj!.name );
end );
##
InstallMethod( \=,
"for test obj",
[ IsToDoListTestObject, IsToDoListTestObject ],
IsIdenticalObj
);