X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=20edcbfcf14c3dc40153e9c35388c529532ec5ea;hb=3845c1fa84a7ac80aa6e686512b055d37496764d;hp=f4c48ac3531916626b777ef9ede78ae080997830;hpb=b41e94b86a1eda01fe890971025e9a36a32b0707;p=jscl.git diff --git a/test.lisp b/test.lisp index f4c48ac..20edcbf 100644 --- a/test.lisp +++ b/test.lisp @@ -1,28 +1,61 @@ -(lambda (x y) - x) +;;; Library -(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) + (%compile-defmacro 'defmacro + (lambda (name args &rest body) + `(eval-when-compile + (%compile-defmacro ',name (lambda ,args ,@body)))))) -;;; Functions -(debug "---FUNCTIONS---") -(eval-when-compile - (%compile-defun 'f)) -(fsetq f (lambda (x) (+ x 10))) -(debug (f 20)) +(defmacro defvar (name value) + `(progn + (eval-when-compile + (%compile-defvar ',name)) + (setq ,name ,value))) -;;; Macros -(debug "---MACROS---") -(eval-when-compile - (%compile-defmacro 'f (lambda (x) (list '+ x 10)))) +(defmacro defun (name args &rest body) + `(progn + (eval-when-compile + (%compile-defun ',name)) + (fsetq ,name (lambda ,args ,@body)))) + +(defun = (x y) (= x y)) +(defun + (x y) (+ x y)) +(defun - (x y) (- x y)) +(defun * (x y) (* x y)) +(defun / (x y) (/ x y)) +(defun 1+ (x) (+ x 1)) +(defun 1- (x) (- x 1)) +(defun cons (x y ) (cons x y)) +(defun car (x) (car x)) +(defun cdr (x) (cdr x)) + +(defun append (list1 list2) + (if (null list1) + list2 + (cons (car list1) + (append (cdr list1) list2)))) + +(defun reverse-aux (list acc) + (if (null list) + acc + (reverse-aux (cdr list) (cons (car list) acc)))) + +(defun reverse (list) + (reverse-aux list '())) + +(defun mapcar (func list) + (if (null list) + '() + (cons (funcall func (car list)) + (mapcar func (cdr list))))) + +(defmacro push (x place) + `(setq ,place (cons ,x ,place))) + +(defvar *package* (new)) + +(defun intern (name) + (set *package* name (make-symbol name))) -(debug (f 10)) +(defun find-symbol (name) + (get *package* name))