X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=3abd8f5ec9cf78307d2518a1297e8b947bbf6bd6;hb=0352e2cff01edf1853e4db7d64b8ae6d94807d25;hp=a38014b178d2bf9175211d10a51c8e5bc8bbdd1a;hpb=0188e1908fdc55a98c0ebb99f3a95e2787dd7c5d;p=jscl.git diff --git a/test.lisp b/test.lisp index a38014b..3abd8f5 100644 --- a/test.lisp +++ b/test.lisp @@ -1,3 +1,20 @@ +;;; Library + +(eval-when-compile + (%compile-defmacro 'defmacro + (lambda (name args &rest body) + `(eval-when-compile + (%compile-defmacro ',name (lambda ,args ,@body)))))) + +(defmacro defun (name args &rest body) + `(progn + (eval-when-compile + (%compile-defun ',name)) + (fsetq ,name (lambda ,args ,@body)))) + + +;;; Tests + (lambda (x y) x) (debug "hola") @@ -19,15 +36,14 @@ (fsetq f (lambda (x) (+ x 10))) (debug (f 20)) +(debug ((lambda (x) x) 9999)) + +(debug #'f) + ;;; 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))) @@ -53,6 +69,10 @@ (debug (symbol-name 'foo)) (debug (symbol-name 'foo-bar)) +(debug (progn 1 2 3 123)) + +(debug (let ((x 99999)) + (incf x))) ;;; &rest lambda-list @@ -60,7 +80,9 @@ (debug (lambda (x y &rest z) z)) (debug (lambda (x y &rest z) x)) -;; (debug (foo)) + +(defun f (x) (* x x)) +(debug (f 33)) ;; (eval-when-compile ;; (%compile-defmacro 'defun