[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Thoughts on GLS's (non)suggestion



Fortunately, 
	(DEFUN FOO (X Y)
		X ; ignored
	   (FROB Y))

would be broken by such a mechanism... saved from one crock by another.
Here's another (probably losing) suggestion -- you could give DEF-FORMs
a plist area of their own. So that

	(DEFUN FOO (X) X) ;has no plist
	(DEFUN (FOO BAR) (X) ...) ;is handled specially as explained below
	(DEFUN (FOO . (tag1 val1 tag2 val2 ...)) arglist . body) ;is the
		;general form

The case of (FOO BAR) wouldn't show up (being an odd-length prop list), so
would be made to mean (PROP-NAME BAR) or something like that. Pick whatever
label you want. The more general form would be (DEFUN (FOO PROP-NAME x) ...)
So definitional properties would all live in this area. You might say,
for example,

	(DEFUN (FOO PROP-NAME FOO-EXPR
		    OPTIMIZERS (...)
		    COMPILE-ME T ;This would replace DEFMACRO-FOR-COMPILING
		    ...)
	       arglist . body)

This would offer an alley for unifying the Maclisp and LispM defmacro
incompatibilities, since it offers a way for both parties to get the 
functionality they want.  The few users of (DEFUN (FOO exprprop subrprop) ..)
available in Maclisp right now would have to change this to 
(DEFUN (FOO PROP-NAME exprprop COMPILED-PROP-NAME subrprop) arglist . body)