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

[no subject]

I would like to add some keyword parameters to COMPILE in our
Common Lisp system, so that the user can control its behavior
in an implementation-dependent way.  However, the specification of 
COMPILE in CLtL prevents me from doing this.  CLtL says:

	compile <name> &optional <definition>             [Function]
	If <definition> is supplied, it *should* be a lambda-expression,
	...  If it is not supplied, then <name> should be a symbol ...

The problem arises when the user does not want to specify <definition>, but
does want to specify <name> and implementation-dependent keyword parameters,
since there clearly is no way to do this.  There seem to be two solutions
for this problem.

A. Let <definition> be a keyword parameter as in the case of :OUTPUT-FILE
parameter to COMPILE-FILE.

B. Allow COMPILE to accept NIL (or anything other than a lambda-expression)
as the value of <definition>, and let COMPILE work as though no <definition>
was supplied.  That is, change the description of COMPILE as:

	If <definition> is supplied and is non-NIL, it *should* be ...
	... If it is not supplied or if it is NIL, then <name> should be
	a symbol ...

B seems more reasonable than A, but A is also acceptable, since, in
my experience, the user seldom wants to supply <definition> actually.

-- Taiichi