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

Common LOOPS questions



Are MLET and MLABELS intended to do lexical binding, like FLET and
LABELS, or dynamic binding, altering what SYMBOL-FUNCTION of the symbol
returns?  I find the description somewhat confusing, especially the
statement that "FLET binds the function cell" of a symbol.

Also: how does one obtain something which can be passed as a second
argument to SPECIALIZE?  Is there a METHOD macro to complete the ratio

  DEFUN : LAMBDA  ::  DEFMETHOD : METHOD  ?

In other words, is

  (defmethod foo ((x frob) y) body)

equivalent to a form consisting of user-visible primitives, e.g.,

  (progn (if (not (fboundp 'foo))
	     (setf (symbol-function 'foo) (make-discriminator)))
	 (setf (symbol-function 'foo)
	       (specialize (symbol-function 'foo)
			   (method ((x frob) y) body)))) ,

in the same way that

  (defun foo (x y) body)

is equivalent to

  (setf (symbol-function 'foo)
	(lambda (x y) (block foo body))) ?

Jonathan Rees