What would it mean to have a MOP for a language which doesn't have objects in the OO sense? Especially C.
- you can send it to another machine turning it into RPC, and you can encrypt (some of) the parameters because of this
- you can add save the program state before you execute it for checkpointing purposes
- you can log the parameters for tracing
- ...Just because some language does not have classes doesn't mean you cannot implement a functional substitute.
CLOS does not use methods attached to classes, which can be invoked by message sending or similar. Instead CLOS uses Generic Functions which consist of one or more Methods. Methods are dispatched over classes, using possibly multiple arguments. Generic Functions are themselves objects and they are defined outside of classes. When a Generic Function gets called, all the applicable Methods are combined to an Effective Method that then will be executed.