Avoid redeclarate variable and functions
authorDavid Vazquez <davazp@gmail.com>
Mon, 17 Dec 2012 19:11:12 +0000 (19:11 +0000)
committerDavid Vazquez <davazp@gmail.com>
Mon, 17 Dec 2012 19:11:12 +0000 (19:11 +0000)
lispstrack.lisp

index a9fba97..de2cbf9 100644 (file)
 
 
 (defun %compile-defvar (name)
-  (push (make-var-binding name) *env*)
-  (push (concat "var " (lookup-variable name *env*)) *toplevel-compilations*))
+  (unless (lookup-variable name *env*)
+    (push (make-var-binding name) *env*)
+    (push (concat "var " (lookup-variable name *env*)) *toplevel-compilations*)))
 
 (defun %compile-defun (name)
-  (push (make-func-binding name) *fenv*)
-  (push (concat "var " (lookup-variable name *fenv*)) *toplevel-compilations*))
+  (unless (lookup-variable name *fenv*)
+    (push (make-func-binding name) *fenv*)
+    (push (concat "var " (lookup-variable name *fenv*)) *toplevel-compilations*)))
 
 (defun %compile-defmacro (name lambda)
   (push (cons name (cons 'macro lambda)) *fenv*))