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

Proposals 2, 3, & 4



In addition to printing out the argument list for users, I had in mind
things like trace functions and debuggers that might want to print

ITEM:	FOO
LIST:	(BAR BAH BURP)

rather than 

Argument 1: FOO
Argument 2: (BAR BAH BURP)

One might argue that all such applications are implementation-dependent
anyway, and one might be right about that.  Anyway, that's what I had in
mind in proposing this function in this particular form.

Regarding Rob's specific objections:

     1] There is no way to obtain the names of keyword arguments.
These aren't interesting.  We can get at the keywords themselves via
FUNCTION-PARAMETERS.

     2] There is no way to determine defmacro syntax...
The situation with DEFMACRO is very complicated.  The "lambda list" to
DEFMACRO only gives part of the story, since some things are evaluated,
others not, and others are used in even more complex ways.  I grant that
in many cases it is useful to look at the "lambda list" of the DEFMACRO

     3] Returning the names as symbols has efficiency implications.
        Spice Lisp stores argument lists as strings to save space.

The symbols could be extracted from a stored string fairly easily,
modulo package problems.  Then again, package problems could be serious
here: we might not want to call this function if it would create a lot
of symbols that would not otherwise exist at runtime.  Perhaps it would
be better to return a list of strings, each of which names one of the
arguments.

-- Scott