~ 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