A version of methods lists that has been ‘linearized’
for producing summary information. The actual objects from class
"MethodsList"
used for method dispatch are defined recursively
over the arguments involved.
The function linearizeMlist
converts an ordinary methods
list object into the linearized form.
methods
:Object of class "list"
, the method
definitions.
arguments
:Object of class "list"
, the
corresponding formal arguments, namely as many of the arguments
in the signature of the generic function as are active in the
relevant method table.
classes
:Object of class "list"
, the
corresponding classes in the signatures.
generic
:Object of class "genericFunction"
;
the generic function to which the methods correspond.
The current version of linearizeMlist
does not take advantage of
the MethodDefinition
class, and therefore does more work for less
effect than it could. In particular, we may move to redefine both the
function and the class to take advantage of the stored signatures.
Don't write code depending precisely on the present form, although all
the current information will be obtainable in the future.
Function linearizeMlist
for the computation,
and class '>MethodsList
for the original, recursive
form.