From: David Vazquez Date: Mon, 17 Dec 2012 13:32:43 +0000 (+0000) Subject: Move library to lispstrack.lisp X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=623000fd16dc784cb9e6b5e264f1fbd6eb455d5f;p=jscl.git Move library to lispstrack.lisp --- diff --git a/lispstrack.lisp b/lispstrack.lisp index 6d49443..8481fb7 100644 --- a/lispstrack.lisp +++ b/lispstrack.lisp @@ -1,3 +1,54 @@ +#+lispstrack +(progn + (eval-when-compile + (%compile-defmacro 'defmacro + (lambda (name args &rest body) + `(eval-when-compile + (%compile-defmacro ',name (lambda ,args ,@body)))))) + + (defmacro defvar (name value) + `(progn + (eval-when-compile + (%compile-defvar ',name)) + (setq ,name ,value))) + + (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)))))) + (defun !reduce (func list initial) (if (null list) @@ -400,6 +451,9 @@ (define-compilation eq (x y) (concat "(" (ls-compile x env fenv) " === " (ls-compile y env fenv) ")")) +(define-compilation eql (x y) + (concat "(" (ls-compile x env fenv) " == " (ls-compile y env fenv) ")")) + (define-compilation code-char (x) (concat "String.fromCharCode( " (ls-compile x env fenv) ")")) diff --git a/test.lisp b/test.lisp index a85daba..ae8b02d 100644 --- a/test.lisp +++ b/test.lisp @@ -1,55 +1,5 @@ ;;; Library -(eval-when-compile - (%compile-defmacro 'defmacro - (lambda (name args &rest body) - `(eval-when-compile - (%compile-defmacro ',name (lambda ,args ,@body)))))) - -(defmacro defvar (name value) - `(progn - (eval-when-compile - (%compile-defvar ',name)) - (setq ,name ,value))) - -(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))))) - - ;;; Tests (lambda (x y) x)