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