mes: Move pair? to core.
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 18 Oct 2018 18:06:10 +0000 (20:06 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 18 Oct 2018 18:06:10 +0000 (20:06 +0200)
* src/lib.c (pair_p): New function.  Gains 8% performance on MesCC.

mes/module/mes/boot-0.scm.in
mes/module/mes/boot-01.scm
mes/module/mes/boot-02.scm
mes/module/mes/type-0.mes
scaffold/boot/37-closure-lambda.scm
scaffold/boot/38-simple-format.scm
scaffold/boot/4c-quasiquote.scm
scaffold/boot/60-let-syntax-expanded.scm
src/lib.c

index 23af005968d6596da51b8bc0b8becf527c62b7b4..d8b61babf2715fb921cb99f693f64202ceeb4747 100644 (file)
@@ -42,7 +42,6 @@
 ;; end boot-00.scm
 
 ;; boot-01.scm
-(define (pair? x) (eq? (core:type x) <cell:pair>))
 (define (not x) (if x #f #t))
 
 (define (display x . rest)
index 319d02dcb19e6d0f2dcd6641c297415fcb48e334..edad5e3cde7801d38f1ed341c30315a1b7a2ed40 100644 (file)
@@ -32,7 +32,6 @@
 ;; end boot-00.scm
 
 ;; boot-01.scm
-(define (pair? x) (eq? (core:type x) <cell:pair>))
 (define (not x) (if x #f #t))
 
 (define (display x . rest)
index d437b09b8f6941081e7997a677bd0144003957de..e400db43edde432892656ef4db52d8449c4991a2 100644 (file)
@@ -42,7 +42,6 @@
 ;; end boot-00.scm
 
 ;; boot-01.scm
-(define (pair? x) (eq? (core:type x) <cell:pair>))
 (define (not x) (if x #f #t))
 
 (define (display x . rest)
index 4db75f9c4b422d0e47d409fd947f1569b7f59b61..0a0159948a2c269e290b3b1fecf821cbfb7a9653 100644 (file)
@@ -75,9 +75,6 @@
 (define (number? x)
   (eq? (core:type x) <cell:number>))
 
-(define (pair? x)
-  (eq? (core:type x) <cell:pair>))
-
 (define (port? x)
   (eq? (core:type x) <cell:port>))
 
index 2ff04c1a5a5d5a0e12766fab4cdf19197da18dc7..5f0b968c8c000643d2827de62a807f2f7234a9c6 100644 (file)
@@ -16,9 +16,6 @@
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
 
-(define (pair? x)
-  (eq? (core:type x) <cell:pair>))
-
 (define (atom? x)
   (if (pair? x) #f
       (if (null? x) #f
index 4a1f9a80a3efa06a9fc91a2036dfd014ec80b391..cca39ec0ffc607dd187cf3e264b96b6640a42450 100644 (file)
@@ -16,8 +16,6 @@
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
 
-(define (pair? x) (eq? (core:type x) <cell:pair>))
-
 (define (not x) (if x #f #t))
 
 (define-macro (or . x)
index 5361991a45f81952b7f542d6d8e7139c1dc49165..e5d3374baedba0023c31d67c2e00fb94c6256256 100644 (file)
@@ -16,7 +16,6 @@
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
 
-(define (pair? x) (eq? (core:type x) <cell:pair>))
 (define (vector? x)
   (eq? (core:type x) <cell:vector>))
 
@@ -85,7 +84,7 @@
 ;;          ((lambda (a d)
 ;;             (core:display "  a=") (core:display a) (core:display "\n")
 ;;             (core:display "  d=") (core:display d)
-            
+
 ;;             (if (pair? d)
 ;;                 (if (eq? (car d) 'quote)
 ;;                     (if (and (pair? a) (eq? (car a) 'quote))
             (core:display "\n")
             (core:display "CDR d=") (core:display d)
             (core:display "\n")
-            
+
                  (if (pair? d)
                      (if (eq? (car d) 'quote)
                          (if (and (pair? a) (eq? (car a) 'quote))
index 8f84943f0fb17d149b638c709d1c0337675b7d46..9cec17fd5477ada67c762d850512db582f8968f5 100644 (file)
@@ -36,7 +36,6 @@
 (define <cell:pair> 7)
 (define <cell:string> 10)
 
-(define (pair? x) (eq? (core:type x) <cell:pair>))
 (define (not x) (if x #f #t))
 
 (define (display x . rest)
index 882e5fdba111afaeae5d2dc410ee6414252a16a5..5730ce38ba1274769ebc7e37836c1da63c2a61fd 100644 (file)
--- a/src/lib.c
+++ b/src/lib.c
@@ -348,3 +348,9 @@ last_pair (SCM x)
     x = CDR (x);
   return x;
 }
+
+SCM
+pair_p (SCM x)
+{
+  return TYPE (x) == TPAIR ? cell_t : cell_f;
+}