'lambda' or 'fn' are build in attributes of a list, they are not symbols, i.e
(first (lambda (x) (+ x x))) => (x) ; not lambda
Imagine you have a function or macro (it doesn't matter for this example)
(define (double x) (+ x x)) => (lambda (x) (+ x x))
You can acces the body:
(last double) => (+ x x)
and modify it:
(set-nth 1 double '(+ x x x)) => (lambda (x) (+ x x x))
(double 3) => 9
So, yes you can acces the body of a function or macro, which are always first-class objects in newLISP. In Common LISP or Scheme after evaluating the define/defun/lambda expression, they are not accessable any more and 'lambda' or 'macro' a symbols like 'print' 'map' etc. In newLISP lambda indicates that the list is a special sub-type of list a "lambda list". You can cons on to it or append to it, and they evaluate to themselves.
Macros work very different in newLISP as they do in Common LISP or Scheme. Please read the manual chapters about lambda and lambda expressions (chapter 7) and the function reference about 'define' and 'define-macro' and 'expand', where all this is explained in more detailed.
There is also 2 paragraphs about it in here:
http://newlisp.org/index.cgi?page=Diffe ... ther_LISPs
See the parapgraphs 1. and 9.
Lutz