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

Re: function specs



I am perfectly willing to go with options A or B for DEFUN.  They seem
equally undesireable syntax.  However I would like to have someone define
what the construct for MACRO's, FEXPR's (if Common Lisp has such
things), and any other odd things that DEFUN can generate.  If it is not
possible to do that, then I think we would be better off using (PUTPROP
'FOO 'BAR '#(LAMBDA ...  Furthermore, I would like to request that the
this definition include a specification of the actual data structure to
be used for interpreted functions.  There are two good reasons for this:
  - One good thing about Lisp is supposed to be that programs can
	manipulate code, it seems bad to have functional objects (except
	for compiled code and possibly FUNARG's) be system-dependent.
	(The traditional representation is, of course, LAMBDA
	expressions.)  
  - It is one thing to hide the representation used by (DEFUN FOO, since
	the user can't directly access function definitions (unless he
	happens to know that EXPR properties are used in his
	implementation).  However by definition (DEFUN (:PROPERTY FOO BAR) ..
	is creating a user-visible data structure.  It would be a good
	practice to define what that data structure is.  Clearly in
	some cases (compiled code) it is not reasonable to do so, but
	for interpreted code I claim it is.

I think that in meeting this request you will find it necessary to
define either an MLAMBDA (a lambda for macro's) or a syntax like either
(LAMBDA (%MACRO L)... or (MACRO LAMBDA (L) ....  and the equivalent for
FEXPR's, etc. (if they exist).

This is the reason why I expessed some scepticism about the construct
initially.  

-------