[movitz-cvs] CVS movitz/losp/muerte

ffjeld ffjeld at common-lisp.net
Sun Mar 16 22:28:16 UTC 2008


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory clnet:/tmp/cvs-serv6708

Modified Files:
	eval.lisp 
Log Message:
Working on making macros work.


--- /project/movitz/cvsroot/movitz/losp/muerte/eval.lisp	2008/03/15 20:57:39	1.19
+++ /project/movitz/cvsroot/movitz/losp/muerte/eval.lisp	2008/03/16 22:28:12	1.20
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Fri Oct 19 21:15:12 2001
 ;;;;                
-;;;; $Id: eval.lisp,v 1.19 2008/03/15 20:57:39 ffjeld Exp $
+;;;; $Id: eval.lisp,v 1.20 2008/03/16 22:28:12 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -92,9 +92,10 @@
 	  (setf (eval-setf form env))
 	  ((defvar) (eval-defvar form env))
 	  (let (eval-let (cadr form) (cddr form) env))
-	  (time (eval-time (cadr form) env))
 	  ((defun) (eval-defun (cadr form) (caddr form) (cdddr form) env))
 	  ((lambda) (eval-function form env)) ; the lambda macro..
+	  ((multiple-value-bind)
+	   (eval-m-v-bind form env))
 	  ((multiple-value-prog1)
 	   (multiple-value-prog1 (eval-form (cadr form) env)
 	     (eval-progn (cddr form) env)))
@@ -139,18 +140,6 @@
 		     (apply f a0 a1 evaluated-args)))
 		 f env a0 a1 form))))))
 
-(defun eval-time (form env)
-  "Supposed to be the time macro."
-  (cond
-   ((cpu-featurep :tsc)
-    (time (eval-form form env)))
-   (t (let ((start-mem (malloc-cons-pointer)))
-	(multiple-value-prog1
-	    (eval-form form env)
-	  (let ((clumps (- (malloc-cons-pointer) start-mem)))
-	    (format t ";; Space used: ~D clumps = ~/muerte:pprint-clumps/.~%"
-		    clumps clumps)))))))
-    
 (defun parse-declarations-and-body (forms)
   "From the list of FORMS, return first the list of non-declaration forms, ~
 second the list of declaration-specifiers."
@@ -322,6 +311,15 @@
 	(progv special-vars special-values
 	  (eval-progn body local-env))))))
 
+(defun eval-m-v-bind (form env)
+  (destructuring-bind (variables values-form &body body)
+      (cdr form)
+    (let ((values (multiple-value-list (eval-form values-form env))))
+      (dolist (variable variables)
+	(push (cons variable (pop values))
+	      env))
+      (eval-progn body env))))
+
 (defun eval-function (function-name env)
   (etypecase function-name
     (symbol




More information about the Movitz-cvs mailing list