~ chicken-r7rs (master) 89c9412526104f2631cb7290421dd856f779d0fd


commit 89c9412526104f2631cb7290421dd856f779d0fd
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Fri Jul 24 11:21:00 2015 +1200
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Fri Jul 24 13:12:20 2015 +1200

    Remove numbers egg dependency

diff --git a/r7rs.meta b/r7rs.meta
index 93a34d7..bd00e0d 100644
--- a/r7rs.meta
+++ b/r7rs.meta
@@ -2,6 +2,6 @@
  (author "The Chicken Team")
  (category lang-exts)
  (license "BSD")
- (depends matchable make (numbers "2.9"))
+ (depends matchable make srfi-13)
  (test-depends test)
  (foreign-depends))
diff --git a/r7rs.scm b/r7rs.scm
index 27f4025..9c4d162 100644
--- a/r7rs.scm
+++ b/r7rs.scm
@@ -9,11 +9,6 @@
   (begin-for-syntax
     (require-library r7rs-compile-time))
 
-  ;; For extended number literals.
-  (if (feature? 'compiler-extension)
-      (require-library numbers-syntax)
-      (require-extension numbers))
-
   ;; For #u8(...) syntax.
   (require-extension srfi-4)
 
diff --git a/scheme.base.scm b/scheme.base.scm
index 01176c3..6e587f0 100644
--- a/scheme.base.scm
+++ b/scheme.base.scm
@@ -34,7 +34,16 @@
 (begin-for-syntax
   (require-library r7rs-compile-time))
 (import r7rs-support)
-(import numbers)
+
+;; Numerical operations.
+(import (rename (only scheme exact->inexact inexact->exact modulo quotient remainder)
+                (exact->inexact inexact)
+                (inexact->exact exact)
+                (modulo floor-remainder)
+                (quotient truncate-quotient)
+                (remainder truncate-remainder))
+        (rename (only chicken quotient&remainder)
+                (quotient&remainder truncate/)))
 
 ;; read/write-string/line/byte
 (require-library extras)
@@ -160,9 +169,26 @@
 ;;;
 
 (: square (number -> number))
+(: floor/ (number number -> number number))
+(: floor-quotient (number number -> number))
 
 (define (square n) (* n n))
 
+;; `floor/` and `floor-quotient` taken from the numbers egg.
+
+(define (floor/ x y)
+  (receive (div rem) (quotient&remainder x y)
+    (if (positive? y)
+        (if (negative? rem)
+            (values (- div 1) (+ rem y))
+            (values div rem))
+        (if (positive? rem)
+            (values (- div 1) (+ rem y))
+            (values div rem)))))
+
+(define (floor-quotient x y)
+  (receive (div rem) (floor/ x y) div))
+
 ;;;
 ;;; 6.3 Booleans
 ;;;
diff --git a/scheme.complex.scm b/scheme.complex.scm
index 348db94..b74f153 100644
--- a/scheme.complex.scm
+++ b/scheme.complex.scm
@@ -4,5 +4,4 @@
 			make-polar
 			imag-part
 			real-part)
-  (import numbers)
-)
+  (import scheme))
diff --git a/scheme.inexact.scm b/scheme.inexact.scm
index 4d9d687..ca402df 100644
--- a/scheme.inexact.scm
+++ b/scheme.inexact.scm
@@ -10,4 +10,4 @@
 			log
 			sqrt
 			nan?)
-  (import numbers))
+  (import scheme chicken))
diff --git a/scheme.r5rs.scm b/scheme.r5rs.scm
index 1e664ea..dcd9953 100644
--- a/scheme.r5rs.scm
+++ b/scheme.r5rs.scm
@@ -6,8 +6,8 @@
 	   (null-environment %null-environment)
 	   (scheme-report-environment %scheme-report-environment)))
 
-  (import numbers)
-  (export angle make-polar make-rectangular rationalize)
+  (reexport
+   (only chicken angle make-polar make-rectangular rationalize))
 
   (require-extension scheme.eval)
   (export null-environment scheme-report-environment)
diff --git a/tests/run.scm b/tests/run.scm
index 454e6c6..3e8c30b 100644
--- a/tests/run.scm
+++ b/tests/run.scm
@@ -979,12 +979,6 @@
          (test "DSSSL keyword arguments aren't renamed (not R7RS)"
                "hello, XXX" (bar who: "XXX")))))
 
-(test-group "define-library"
-  (test-assert "R7RS libraries use the numbers extension"
-               (define-library (foo)
-                 (import (scheme base))
-                 (begin (eq? numbers#+ +)))))
-
 (test-group "define-record-type"
   (define-record-type foo (make-foo) foo?)
   (define foo (make-foo))
Trap