#|
So much happening  ...  Please tune into aNONradio tomorrow!  Synthetic wumpuses
will be hunted. I think. I've got an idea. 

But for now while bone tired, I was thinking about knocking it up a level. Truth
be told (as usual) ldbeth mentioned using a two-quasiquote macro. It's something
I never really grokked. 

Here's a try.
|#

(defmacro lamdef ((nth) &body body) "
(lamdef (nth) ..forms..)
a list of
(0) : CARs of the forms
or
(1) : Quoted forms
or
(2) : evaluated forms
"
 `(format t "~@{~a~%~}"
 ,@(mapcar
 (lambda (lambda)
 `(nth-value ,nth
 (let ((lambda ',lambda))
 (apply 'values `(,(car lambda)
 ,lambda
 ,,lambda)))))
 body)))


#|

Well  macros   can  be confusing.   I think  if I used the nth  parameter   more
vigorously something interesting would be happening. I've just shadowed the name
lambda and used commas to access the name at different levels. 

> (lamdef (0) (lambda () '5) (list 1 2))

(LAMBDA LIST)
> (lamdef (2) (lambda () '5) (list 1 2))

(#<bytecompiled-closure #<bytecompiled-function 0xxxx>> (1 2))
> (lamdef (1) (lambda () '5) (list 1 2))
|#