~ chicken-r7rs (master) 54919112d2df913c78323c225897fcf270c6fcdf


commit 54919112d2df913c78323c225897fcf270c6fcdf
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Sat Jul 6 19:24:42 2013 +0000
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Sat Jul 6 19:24:42 2013 +0000

    Don't check the same object's type twice

diff --git a/scheme.base.scm b/scheme.base.scm
index 3b6ad1d..d49c81c 100644
--- a/scheme.base.scm
+++ b/scheme.base.scm
@@ -109,13 +109,13 @@
 (: boolean=? (boolean boolean #!rest boolean -> boolean))
 
 (define (boolean=? b1 b2 . rest)
+  (##sys#check-boolean b1 'boolean=?)
   ;; Loop across all args, checking for booleans.  Don't shortcut and
   ;; stop when we find nonequality.
   (let lp ((b1 b1)
            (b2 b2)
            (rest rest)
            (result (eq? b1 b2)))
-    (##sys#check-boolean b1 'boolean=?)
     (##sys#check-boolean b2 'boolean=?)
     (if (null? rest)
         (and result (eq? b1 b2))
Trap