more mset hackery. Parallel assignment.



richard,

i'm very much in favor of implementing defstruct and extending 
mset to handle structures and multiple assignment. 
however i have some quibbles about the code.

> (defparameter mset_extension_operators  ;; make MLIST acceptable on LHS of assign.
>      (cons (cons 'mlist '$mlistassign) mset_extension_operators))

quibble #1. i'd rather steer away from a hook mechanism of this kind.
potentially any function could be modified. are we going to have a hook
for every function? that's a mess. how about only the most popular ones?
displa, meval, simplifya? as soon as we make a list, someone will
want another function. and even if there are only 6 or 12 functions
on the list, establishing and maintaining their hooks is still a mess.

won't something like
(let ((mset-save (symbol-function mset))) (defun mset (xx yy)
(if (looks like i can handle it) (do my new thing) (funcall mset-save xx yy))))
work just as well, and much more simply ??

quibble #2. msethack.lisp calls the new assignment function after 
attempting to assign it with the built-in mset. i think we want it to
work the other way around -- call the new mset first, punt to built-in
if new mset can't handle it. (and the scheme presented above
does just that.)

thanks for working on this problem,
robert dodier