X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=e7209a1ff1c90137d18e987cfb4a9361a10e0cfc;hb=531b82883be8e52dbd6c3f5ff6e636726739ef58;hp=36331f28ecef9fdeca827865d3a1a80ca2fe0125;hpb=64bbc0eee76aae8e023a7ed0b4a66f5d91bed684;p=jscl.git diff --git a/test.lisp b/test.lisp index 36331f2..e7209a1 100644 --- a/test.lisp +++ b/test.lisp @@ -19,3 +19,38 @@ (%compile-defun 'f)) (fsetq f (lambda (x) (+ x 10))) (debug (f 20)) + +;;; Macros +(debug "---MACROS---") + +(eval-when-compile + (%compile-defmacro 'incf + (lambda (y) + (list 'setq y (list '+ 1 y))))) + +(eval-when-compile + (%compile-defvar 'x)) + +(setq x 0) +(incf x) +(debug x) + +(eval-when-compile + (%compile-defmacro 'defmacro + (lambda (name args &rest body) + (list 'eval-when-compile + (list '%compile-defmacro (list 'quote name) + (list* 'lambda args body)))))) + +(defmacro %incf (x) + (list 'setq x (list '+ 1 x))) + +(setq x 10) +(%incf x) +(debug x) + + +;;; &rest lambda-list + +(debug (lambda (&rest x) x)) +(debug (lambda (x y &rest z) x))