|(require (planet "multimethod.ss" ("murphy" "multimethod.plt" 1 0)))|
This module provides procedures and syntactic sugar to create multimethods and to attach procedures to them.
Each multimethod is a structure that can act as a procedure accepting any number of arguments and any keyword arguments. When called, it first applies a signature generator to its arguments and keyword arguments, which should produce a single result. This generated signature is then compared with the signatures for registered method implementations to find the one to call.
See for a precise explanation of how methods are looked up.