Move remaining sets of evfun property to the function.
The remaining cases of 'evok were for defmspec's. Thus, modify
defmspec to allow setting properties in the definition. This is
basically the same syntax as for defmfun.
Use the new defmspec to define the evok property with the definition
and remove the mapc call in mlisp.lisp that set these.
Modify `defmfun` to allow either a symbol or a list defining the
function. The list looks like (name :properties p) where `name` is the
name of the function and `p` is a list of lists for the properties that
we wish to assign to `name`. Similar to the `:properties` option for
`defmvar`.
Remove the `mapc` that set the 'evfun property on a list of functions,
and use the new :property feature of defmfun to set the property when
the function is defined.
mlisp.lisp sets the evflag property for many symbols. For the symbols
in globals.lisp, use the defmvar :properties option to set the evflag
property and remove it from the mapc in mlisp.lisp.
Support `:setting-predicate` (and `setting-predicate`) option in `defmvar`.
We prefer `:setting-predicate`, however.
Update `$gensumnum` and `$genindex` to support this.
The predicate for `$gensumnum` was not correct, so it's been updated to
verify the value must either be NIL or a non-negative integer. This
also required changing `gensumindex` to allow `$gensumnum` to be NIL.
677f2de...
by
Barton Willis <email address hidden>
o Let's dispatch radcan on (integer)^X only when integer is positive. This matches the source code commment.
o No problems with the testsuites.