X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=4b87743c8b59f87e49af000222b630266ea1038e;hb=34dd089e729a3980a23f26f1f601fd58069f6e27;hp=0e128b369ee567a8bf9251899a24b3b8363e7207;hpb=2c2ab0bff82ef1417893edd4d9b2b65ee1afbb09;p=jscl.git diff --git a/test.lisp b/test.lisp index 0e128b3..4b87743 100644 --- a/test.lisp +++ b/test.lisp @@ -1,12 +1,61 @@ (lambda (x y) x) +(debug "hola") +(debug '(1 2 3 4)) +(debug (if 2 (+ 2 1) 0)) +(debug (= (+ 2 1) (- 4 1))) + +;;; Variables +(debug "---VARIABLES---") (eval-when-compile (%compile-defvar 'name)) (setq name 10) (debug name) -(debug "hola") -(debug '(1 2 3 4)) -(debug (if 2 (+ 2 1) 0)) -(debug (= (+ 2 1) (- 4 1))) +;;; Functions +(debug "---FUNCTIONS---") +(eval-when-compile + (%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)))))))