~ 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