X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=4b87743c8b59f87e49af000222b630266ea1038e;hb=34dd089e729a3980a23f26f1f601fd58069f6e27;hp=d555938e6923826704037d2266d2999b835a9777;hpb=5bd86ab1fa41dcace1ffa49c63853546d5ef079f;p=jscl.git diff --git a/test.lisp b/test.lisp index d555938..4b87743 100644 --- a/test.lisp +++ b/test.lisp @@ -1,5 +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) + +;;; 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)))))))