module MyVector() option object; local value := Vector(); export ModuleApply::static := proc( ) Object( MyVector, _passed ); end proc; export ModuleCopy::static := proc( mv::MyVector, proto::MyVector, v::Vector, $ ) mv:-value := v; end proc; export ModulePrint::static := proc(mv::MyVector, $ ) mv:-value; end proc; # operations: export `+`::static := proc( v1::MyVector, v2::MyVector ) MyVector( v1:-value + v2:-value ); end proc; export `*`::static := proc( v::MyVector, scalar_val::numeric) MyVector( v:-value * scalar_val); end proc; end module: