X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=4b87743c8b59f87e49af000222b630266ea1038e;hb=34dd089e729a3980a23f26f1f601fd58069f6e27;hp=36331f28ecef9fdeca827865d3a1a80ca2fe0125;hpb=64bbc0eee76aae8e023a7ed0b4a66f5d91bed684;p=jscl.git diff --git a/test.lisp b/test.lisp index 36331f2..4b87743 100644 --- a/test.lisp +++ b/test.lisp @@ -19,3 +19,43 @@ (%compile-defun 'f)) (fsetq f (lambda (x) (+ x 10))) (debug (f 20)) + +;;; Macros +(debug "---MACROS---") + +(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))) + +(eval-when-compile + (%compile-defvar 'x)) + +(setq x 10) +(incf x) +(debug x) + + +;;; &rest lambda-list + +(debug (lambda (&rest x) x)) +(debug (lambda (x y &rest z) z)) +(debug (lambda (x y &rest z) x)) + +;;; Conses +(debug (cons 1 2)) +(debug (car (cons 1 2))) +(debug (cdr (cons 1 2))) + + +;; (eval-when-compile +;; (%compile-defmacro 'defun +;; (lambda (name args &rest body) +;; (list 'eval-when-compile +;; (list 'compile-defun) +;; (list 'fsetq (list 'lambda args (list 'progn body)))))))