Some Lisp dialects have a function neq?, a negated form of eq?. neq? can be defined as a macro as follows:
(define-macro neq? (lambda (x y) (list 'not (list 'eq? x y)) ))
When neq? is used, e.g. in (neq? (car l) 'foo), the Lisp
interpreter first evaluates the macro with x bound to
(car l) and y bound to (quote foo). The macro returns:
      (not (eq? (car l) (quote foo))) ,
which is evaluated by the interpreter or
compiler just as if it were the original expression.
In this case, it does not matter if the variables x and y conflict with user variables, since none of the user's code is evaluated within the macro.
Contents    Page-10    Prev    Next    Page+10    Index