New macro BEGIN0.
authorTaylor R Campbell <campbell@mumble.net>
Mon, 13 Sep 2010 15:28:31 +0000 (15:28 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Mon, 13 Sep 2010 15:28:31 +0000 (15:28 +0000)
(BEGIN0 <expression> <command> ...) evaluates <expression>, executes
<command> ..., and then returns the value of <expression>.

(Cf. Common Lisp's PROG1.)

src/microcode/uxsig.c
src/runtime/mit-macros.scm
src/runtime/runtime.pkg

index f91c16ee978fc0cd1e6e80d6432020e8055a9fc3..eb011b6276d0e47e28941b1e77368dcc8d791553 100644 (file)
@@ -549,9 +549,9 @@ DEFUN_STD_HANDLER (sighnd_terminate,
 static
 DEFUN_STD_HANDLER (sighnd_fpe,
 {
+  FPE_RESET_TRAPS ();
   if (executing_scheme_primitive_p ())
     error_floating_point_exception ();
-  FPE_RESET_TRAPS ();
   trap_handler ("floating-point exception", signo, info, scp);
 })
 #endif
index e142fb39f34b529e6204d3ea0417591b72128476..98deb9031a20b259a142f0a77bd2b9fb598b1155 100644 (file)
@@ -564,4 +564,11 @@ USA.
   `(,keyword:unspecific))
 
 (define (unassigned-expression)
-  `(,keyword:unassigned))
\ No newline at end of file
+  `(,keyword:unassigned))
+
+(define-syntax :begin0
+  (syntax-rules ()
+    ((BEGIN0 form0 form1+ ...)
+     (LET ((RESULT form0))
+       form1+ ...
+       RESULT))))
\ No newline at end of file
index 47fa4d19b18c1d330448e69ed8eb7ef5ac895183..390d57e7bff84bfb7365dcaac206fef589867b1e 100644 (file)
@@ -4599,6 +4599,7 @@ USA.
          (access :access)
          (and :and)
          (and-let* :and-let*)
+         (begin0 :begin0)
          (case :case)
          (cond :cond)
          (cond-expand :cond-expand)