~ chicken-core (chicken-5) ee71f3cdae746a5a37dbe9327e9d6c5d6fac0438
commit ee71f3cdae746a5a37dbe9327e9d6c5d6fac0438
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Mon Feb 9 07:04:34 2015 +1300
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Sun Jul 19 21:12:54 2015 +1200
Convert the data-structures unit into a module
Includes a minor tweak to srfi-4, to avoid depending on data-structures.
diff --git a/README b/README
index b79457c4..6806ecac 100644
--- a/README
+++ b/README
@@ -284,10 +284,10 @@
| |-- chicken
| | `-- 7
| | |-- chicken.import.so
+ | | |-- chicken.data-structures.import.so
| | |-- chicken.ports.import.so
| | |-- chicken.utils.import.so
| | |-- csi.import.so
- | | |-- data-structures.import.so
| | |-- extras.import.so
| | |-- files.import.so
| | |-- foreign.import.so
diff --git a/batch-driver.scm b/batch-driver.scm
index c2db8dbe..16b76795 100644
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@ -40,7 +40,8 @@
user-options-pass user-read-pass user-preprocessor-pass user-pass
user-post-analysis-pass)
-(import chicken scheme extras data-structures files
+(import chicken scheme extras files
+ chicken.data-structures
chicken.compiler.support
chicken.compiler.compiler-syntax
chicken.compiler.core
diff --git a/c-backend.scm b/c-backend.scm
index 63486c7b..4419430e 100644
--- a/c-backend.scm
+++ b/c-backend.scm
@@ -38,7 +38,8 @@
;; For "foreign" (aka chicken-ffi-syntax):
foreign-type-declaration)
-(import chicken scheme foreign data-structures
+(import chicken scheme foreign
+ chicken.data-structures
chicken.compiler.core
chicken.compiler.c-platform
chicken.compiler.support)
diff --git a/c-platform.scm b/c-platform.scm
index 6d24b258..b2f18736 100644
--- a/c-platform.scm
+++ b/c-platform.scm
@@ -42,7 +42,8 @@
target-include-file words-per-flonum
parameter-limit small-parameter-limit)
-(import chicken scheme data-structures
+(import chicken scheme
+ chicken.data-structures
chicken.compiler.optimizer
chicken.compiler.support
chicken.compiler.core)
diff --git a/chicken-bug.scm b/chicken-bug.scm
index e2cd4f05..f5cc6694 100644
--- a/chicken-bug.scm
+++ b/chicken-bug.scm
@@ -24,9 +24,11 @@
; POSSIBILITY OF SUCH DAMAGE.
-(require-extension posix tcp data-structures utils extras)
+(require-library posix tcp data-structures utils extras)
-(import chicken.utils)
+(import posix tcp extras
+ chicken.data-structures
+ chicken.utils)
(define-constant +bug-report-file+ "chicken-bug-report.~a-~a-~a")
diff --git a/chicken-ffi-syntax.scm b/chicken-ffi-syntax.scm
index 47303dc4..f0b4dbf1 100644
--- a/chicken-ffi-syntax.scm
+++ b/chicken-ffi-syntax.scm
@@ -27,6 +27,7 @@
(declare
(unit chicken-ffi-syntax)
+ (uses data-structures)
(disable-interrupts)
(fixnum))
@@ -38,6 +39,8 @@
(no-bound-checks)
(no-procedure-checks))
+(import chicken.data-structures)
+
(include "mini-srfi-1.scm")
(##sys#provide 'chicken-ffi-syntax)
diff --git a/chicken-install.scm b/chicken-install.scm
index 1d5a85b0..b9069599 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -29,11 +29,12 @@
(module main ()
- (import scheme chicken posix data-structures irregex extras files)
+ (import scheme chicken posix irregex extras files)
(import setup-download setup-api)
(import foreign)
- (import chicken.ports
+ (import chicken.data-structures
+ chicken.ports
chicken.utils)
(include "mini-srfi-1.scm")
@@ -43,12 +44,12 @@
'("setup-api.so" "setup-api.import.so"
"setup-download.so" "setup-download.import.so"
"chicken.import.so"
+ "chicken.data-structures.import.so"
"chicken.ports.import.so"
"chicken.utils.import.so"
"lolevel.import.so"
"srfi-1.import.so"
"srfi-4.import.so"
- "data-structures.import.so"
"files.import.so"
"posix.import.so"
"extras.import.so"
diff --git a/chicken-profile.scm b/chicken-profile.scm
index 688c5361..5e340de7 100644
--- a/chicken-profile.scm
+++ b/chicken-profile.scm
@@ -30,6 +30,8 @@
(uses data-structures
posix))
+(import chicken.data-structures)
+
(include "mini-srfi-1.scm")
(define symbol-table-size 3001)
diff --git a/chicken-status.scm b/chicken-status.scm
index 02ae33a8..501050dd 100644
--- a/chicken-status.scm
+++ b/chicken-status.scm
@@ -30,8 +30,9 @@
(module main ()
(import scheme chicken foreign)
- (import posix data-structures irregex files setup-api extras)
- (import chicken.ports)
+ (import posix irregex files setup-api extras)
+ (import chicken.data-structures
+ chicken.ports)
(include "mini-srfi-1.scm")
diff --git a/chicken-uninstall.scm b/chicken-uninstall.scm
index 5a259e1f..843e7683 100644
--- a/chicken-uninstall.scm
+++ b/chicken-uninstall.scm
@@ -33,8 +33,9 @@
(import scheme chicken foreign)
(import setup-api)
- (import posix data-structures irregex files)
- (import chicken.ports
+ (import posix irregex files)
+ (import chicken.data-structures
+ chicken.ports
chicken.utils)
(include "mini-srfi-1.scm")
diff --git a/chicken.scm b/chicken.scm
index 6f13de85..00e243e7 100644
--- a/chicken.scm
+++ b/chicken.scm
@@ -37,7 +37,8 @@
(import chicken.compiler.batch-driver
chicken.compiler.c-platform
- chicken.utils)
+ chicken.data-structures
+ chicken.utils)
(include "mini-srfi-1.scm")
diff --git a/compiler-syntax.scm b/compiler-syntax.scm
index 88a29739..ff3b0585 100644
--- a/compiler-syntax.scm
+++ b/compiler-syntax.scm
@@ -32,9 +32,10 @@
(module chicken.compiler.compiler-syntax
(compiler-syntax-statistics)
-(import chicken scheme data-structures
+(import chicken scheme
chicken.compiler.support
- chicken.compiler.core)
+ chicken.compiler.core
+ chicken.data-structures)
(include "tweaks.scm")
(include "mini-srfi-1.scm")
@@ -320,4 +321,4 @@
(,f ,zvar (##sys#slot ,lstvar 0)))
,zvar))))
x))
-)
\ No newline at end of file
+)
diff --git a/core.scm b/core.scm
index 545be117..4c51c2f2 100644
--- a/core.scm
+++ b/core.scm
@@ -314,9 +314,10 @@
constant-table immutable-constants inline-table line-number-database-2
line-number-database-size)
-(import chicken scheme foreign extras data-structures
+(import chicken scheme foreign extras
chicken.compiler.scrutinizer
- chicken.compiler.support)
+ chicken.compiler.support
+ chicken.data-structures)
(define (d arg1 . more)
(when (##sys#fudge 13) ; debug mode?
@@ -2893,4 +2894,4 @@
(debugging 'o "fast global assignments" fastsets))
(values node2 (##sys#fast-reverse literals)
(##sys#fast-reverse lambda-info-literals) lambda-table) ) ) )
-)
\ No newline at end of file
+)
diff --git a/csc.scm b/csc.scm
index ed0a5b23..e921ddfd 100644
--- a/csc.scm
+++ b/csc.scm
@@ -29,7 +29,8 @@
(block)
(uses data-structures utils files extras))
-(import chicken.utils)
+(import chicken.data-structures
+ chicken.utils)
(include "mini-srfi-1.scm")
diff --git a/csi.scm b/csi.scm
index a3bd2903..6685af44 100644
--- a/csi.scm
+++ b/csi.scm
@@ -26,7 +26,7 @@
(declare
- (uses ports extras)
+ (uses data-structures ports extras)
(usual-integrations)
(disable-interrupts)
(compile-syntax)
@@ -54,7 +54,8 @@ EOF
describe dump tty-input? history-list history-count
history-add history-ref history-clear history-show) )
-(import chicken.ports)
+(import chicken.data-structures
+ chicken.ports)
;;; Parameters:
diff --git a/data-structures.import.scm b/data-structures.import.scm
deleted file mode 100644
index 343f6f41..00000000
--- a/data-structures.import.scm
+++ /dev/null
@@ -1,72 +0,0 @@
-;;;; data-structures.import.scm - import library for "data-structures" module
-;
-; Copyright (c) 2008-2015, The CHICKEN Team
-; All rights reserved.
-;
-; Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
-; conditions are met:
-;
-; Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-; disclaimer.
-; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-; disclaimer in the documentation and/or other materials provided with the distribution.
-; Neither the name of the author nor the names of its contributors may be used to endorse or promote
-; products derived from this software without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
-; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-; AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-
-
-(##sys#register-primitive-module
- 'data-structures
- '(->string
- alist-ref
- alist-update!
- alist-update
- any?
- atom?
- butlast
- chop
- complement
- compose
- compress
- conc
- conjoin
- constantly
- disjoin
- each
- flatten
- flip
- identity
- intersperse
- join
- list-of?
- merge
- merge!
- o
- rassoc
- reverse-string-append
- sort
- sort!
- sorted?
- topological-sort
- string-chomp
- string-chop
- string-compare3
- string-compare3-ci
- string-intersperse
- string-split
- string-translate
- string-translate*
- substring-ci=?
- substring-index
- substring-index-ci
- substring=?
- tail?))
diff --git a/data-structures.scm b/data-structures.scm
index a3acb9a0..37a9ad77 100644
--- a/data-structures.scm
+++ b/data-structures.scm
@@ -28,6 +28,22 @@
(declare
(unit data-structures))
+(module chicken.data-structures
+ (alist-ref alist-update alist-update! atom? butlast
+ chop compress flatten intersperse join rassoc tail?
+ merge sort sorted? topological-sort
+ conc ->string string-chop string-chomp
+ string-compare3 string-compare3-ci
+ reverse-string-append
+ string-intersperse string-split
+ string-translate string-translate*
+ substring=? substring-ci=?
+ substring-index substring-index-ci
+ any? constantly complement compose
+ conjoin disjoin each flip identity list-of? o)
+
+(import scheme chicken foreign)
+
(include "common-declarations.scm")
(register-feature! 'data-structures)
@@ -767,3 +783,5 @@
(cdar dag)
'()
state)))))
+
+)
diff --git a/defaults.make b/defaults.make
index 30e08e72..ec0979d2 100644
--- a/defaults.make
+++ b/defaults.make
@@ -267,10 +267,10 @@ CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
# import libraries
-PRIMITIVE_IMPORT_LIBRARIES = chicken lolevel srfi-4 data-structures files
+PRIMITIVE_IMPORT_LIBRARIES = chicken lolevel srfi-1 srfi-4 files
PRIMITIVE_IMPORT_LIBRARIES += posix extras tcp foreign csi irregex
PRIMITIVE_IMPORT_LIBRARIES += setup-api setup-download
-DYNAMIC_IMPORT_LIBRARIES = ports utils
+DYNAMIC_IMPORT_LIBRARIES = data-structures ports utils
# targets
diff --git a/distribution/manifest b/distribution/manifest
index 9816c967..5a834b33 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -240,6 +240,8 @@ files.import.scm
files.import.c
chicken.import.scm
chicken.import.c
+chicken.data-structures.import.scm
+chicken.data-structures.import.c
chicken.ports.import.scm
chicken.ports.import.c
chicken.utils.import.scm
@@ -248,14 +250,12 @@ foreign.import.scm
foreign.import.c
lolevel.import.scm
srfi-4.import.scm
-data-structures.import.scm
posix.import.scm
extras.import.scm
irregex.import.scm
tcp.import.scm
lolevel.import.c
srfi-4.import.c
-data-structures.import.c
posix.import.c
extras.import.c
irregex.import.c
diff --git a/extras.scm b/extras.scm
index f4939bfa..32c0f885 100644
--- a/extras.scm
+++ b/extras.scm
@@ -32,6 +32,8 @@
(declare
(hide fprintf0 generic-write) )
+(import chicken.data-structures)
+
(include "common-declarations.scm")
(register-feature! 'extras)
diff --git a/files.scm b/files.scm
index af437d1a..272d5960 100644
--- a/files.scm
+++ b/files.scm
@@ -52,6 +52,8 @@
EOF
))
+(import chicken.data-structures)
+
(include "common-declarations.scm")
(register-feature! 'files)
diff --git a/modules.scm b/modules.scm
index 4b91c8e8..e47c2ad6 100644
--- a/modules.scm
+++ b/modules.scm
@@ -913,6 +913,7 @@
(##sys#register-primitive-module 'r5rs-null '() r4rs-syntax))
(##sys#register-module-alias 'r5rs 'scheme)
+(##sys#register-module-alias 'data-structures 'chicken.data-structures)
(##sys#register-module-alias 'ports 'chicken.ports)
(##sys#register-module-alias 'utils 'chicken.utils)
diff --git a/optimizer.scm b/optimizer.scm
index 93d4960c..9eb4247d 100644
--- a/optimizer.scm
+++ b/optimizer.scm
@@ -36,7 +36,8 @@
eq-inline-operator membership-test-operators membership-unfold-limit
default-optimization-passes rewrite)
-(import chicken scheme data-structures
+(import chicken scheme
+ chicken.data-structures
chicken.compiler.support)
(include "tweaks")
diff --git a/rules.make b/rules.make
index d6ac0efb..a4b0047f 100644
--- a/rules.make
+++ b/rules.make
@@ -511,6 +511,7 @@ $(foreach lib, $(filter-out chicken,$(COMPILER_OBJECTS_1)),\
chicken.c: chicken.scm mini-srfi-1.scm \
chicken.compiler.batch-driver.import.scm \
chicken.compiler.c-platform.import.scm \
+ chicken.data-structures.import.scm \
chicken.utils.import.scm
batch-driver.c: batch-driver.scm mini-srfi-1.scm \
chicken.compiler.core.import.scm \
@@ -520,52 +521,72 @@ batch-driver.c: batch-driver.scm mini-srfi-1.scm \
chicken.compiler.c-platform.import.scm \
chicken.compiler.lfa2.import.scm \
chicken.compiler.c-backend.import.scm \
- chicken.compiler.support.import.scm
+ chicken.compiler.support.import.scm \
+ chicken.data-structures.import.scm
c-platform.c: c-platform.scm mini-srfi-1.scm \
chicken.compiler.optimizer.import.scm \
chicken.compiler.support.import.scm \
- chicken.compiler.core.import.scm
+ chicken.compiler.core.import.scm \
+ chicken.data-structures.import.scm
c-backend.c: c-backend.scm mini-srfi-1.scm \
chicken.compiler.c-platform.import.scm \
chicken.compiler.support.import.scm \
- chicken.compiler.core.import.scm
+ chicken.compiler.core.import.scm \
+ chicken.data-structures.import.scm
core.c: core.scm mini-srfi-1.scm \
chicken.compiler.scrutinizer.import.scm \
- chicken.compiler.support.import.scm
+ chicken.compiler.support.import.scm \
+ chicken.data-structures.import.scm
optimizer.c: optimizer.scm mini-srfi-1.scm \
- chicken.compiler.support.import.scm
+ chicken.compiler.support.import.scm \
+ chicken.data-structures.import.scm
scrutinizer.c: scrutinizer.scm mini-srfi-1.scm \
chicken.compiler.support.import.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm
lfa2.c: lfa2.scm mini-srfi-1.scm \
chicken.compiler.support.import.scm
compiler-syntax.c: compiler-syntax.scm mini-srfi-1.scm \
chicken.compiler.support.import.scm \
- chicken.compiler.core.import.scm
+ chicken.compiler.core.import.scm \
+ chicken.data-structures.import.scm
+chicken-ffi-syntax.c: chicken-ffi-syntax.scm \
+ chicken.data-structures.import.scm
support.c: support.scm mini-srfi-1.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm
csc.c: csc.scm \
+ chicken.data-structures.import.scm \
chicken.utils.import.scm
csi.c: csi.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm
chicken-bug.c: chicken-bug.scm \
+ chicken.data-structures.import.scm \
chicken.utils.import.scm
+chicken-profile.c: chicken-profile.scm \
+ chicken.data-structures.import.scm
chicken-status.c: chicken-status.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm \
setup-api.import.scm
chicken-install.c: chicken-install.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm \
chicken.utils.import.scm \
setup-api.import.scm \
setup-download.import.scm
chicken-uninstall.c: chicken-uninstall.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm \
chicken.utils.import.scm \
setup-api.import.scm
setup-api.c: setup-api.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm \
chicken.utils.import.scm
setup-download.c: setup-download.scm \
+ chicken.data-structures.import.scm \
chicken.ports.import.scm \
chicken.utils.import.scm \
setup-api.import.scm
@@ -573,8 +594,14 @@ posixunix.c: posixunix.scm \
chicken.ports.import.scm
posixwin.c: posixwin.scm \
chicken.ports.import.scm
+extras.c: extras.scm \
+ chicken.data-structures.import.scm
+files.c: files.scm \
+ chicken.data-structures.import.scm
tcp.c: tcp.scm \
chicken.ports.import.scm
+utils.c: utils.scm \
+ chicken.data-structures.import.scm
define profile-flags
$(if $(filter $(basename $(1)),$(PROFILE_OBJECTS)),-profile)
@@ -603,7 +630,7 @@ chicken-syntax.c: $(SRCDIR)chicken-syntax.scm $(SRCDIR)common-declarations.scm $
chicken-ffi-syntax.c: $(SRCDIR)chicken-ffi-syntax.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-srfi-1.scm
$(bootstrap-lib)
data-structures.c: $(SRCDIR)data-structures.scm $(SRCDIR)common-declarations.scm
- $(bootstrap-lib)
+ $(bootstrap-lib) -emit-import-library chicken.data-structures
ports.c: $(SRCDIR)ports.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib) -emit-import-library chicken.ports
files.c: $(SRCDIR)files.scm $(SRCDIR)common-declarations.scm
diff --git a/scrutinizer.scm b/scrutinizer.scm
index f1569ee3..490cda7a 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -33,8 +33,9 @@
(scrutinize load-type-database emit-type-file
validate-type check-and-validate-type install-specializations)
-(import chicken scheme data-structures extras files
+(import chicken scheme extras files
chicken.compiler.support
+ chicken.data-structures
chicken.ports)
(include "tweaks")
diff --git a/setup-api.scm b/setup-api.scm
index 2e74bef6..96817d76 100644
--- a/setup-api.scm
+++ b/setup-api.scm
@@ -66,7 +66,8 @@
setup-error-handling)
(import scheme chicken foreign
- irregex posix extras data-structures files
+ irregex posix extras files
+ chicken.data-structures
chicken.ports
chicken.utils)
diff --git a/setup-download.scm b/setup-download.scm
index 8c6e8eb2..9f3ec607 100644
--- a/setup-download.scm
+++ b/setup-download.scm
@@ -37,8 +37,9 @@
temporary-directory)
(import scheme chicken foreign)
- (import extras irregex posix data-structures tcp files
+ (import extras irregex posix tcp files
setup-api
+ chicken.data-structures
chicken.utils)
(include "mini-srfi-1.scm")
diff --git a/srfi-4.scm b/srfi-4.scm
index 0e4a8346..acedc20b 100644
--- a/srfi-4.scm
+++ b/srfi-4.scm
@@ -531,19 +531,19 @@ EOF
(define-syntax NNNvector->list
(er-macro-transformer
(lambda (x r c)
- (let* ((tag (##sys#strip-syntax (cadr x)))
+ (let* ((tag (symbol->string (##sys#strip-syntax (cadr x))))
(alloc (and (pair? (cddr x)) (caddr x)))
- (name (string->symbol (string-append (symbol->string tag) "->list"))))
+ (name (string->symbol (string-append tag "->list"))))
`(define (,name v)
- (##sys#check-structure v ',tag ',name)
- (let ((len (##core#inline ,(conc "C_u_i_" tag "_length") v)))
+ (##sys#check-structure v ',(string->symbol tag) ',name)
+ (let ((len (##core#inline ,(string-append "C_u_i_" tag "_length") v)))
(let loop ((i 0))
(if (fx>= i len)
'()
(cons
,(if alloc
- `(##core#inline_allocate (,(conc "C_a_u_i_" tag "_ref") ,alloc) v i)
- `(##core#inline ,(conc "C_u_i_" tag "_ref") v i))
+ `(##core#inline_allocate (,(string-append "C_a_u_i_" tag "_ref") ,alloc) v i)
+ `(##core#inline ,(string-append "C_u_i_" tag "_ref") v i))
(loop (fx+ i 1)) ) ) ) ) ) ) )))
(NNNvector->list u8vector)
diff --git a/support.scm b/support.scm
index 2dc27c53..477d95bf 100644
--- a/support.scm
+++ b/support.scm
@@ -75,7 +75,8 @@
;; in a lot of other places.
number-type unsafe)
-(import chicken scheme foreign data-structures files extras
+(import chicken scheme foreign files extras
+ chicken.data-structures
chicken.ports)
(include "tweaks")
diff --git a/tests/compiler-tests.scm b/tests/compiler-tests.scm
index 42cb0256..de31b1ac 100644
--- a/tests/compiler-tests.scm
+++ b/tests/compiler-tests.scm
@@ -2,6 +2,7 @@
(import foreign)
+(use-for-syntax data-structures)
(use srfi-4)
;; test dropping of previous toplevel assignments
diff --git a/tests/port-tests.scm b/tests/port-tests.scm
index 2f70ecf5..4122df59 100644
--- a/tests/port-tests.scm
+++ b/tests/port-tests.scm
@@ -1,4 +1,4 @@
-(require-extension ports utils srfi-4 extras tcp posix)
+(require-extension data-structures ports utils srfi-4 extras tcp posix)
(include "test.scm")
(test-begin)
diff --git a/tests/runtests.bat b/tests/runtests.bat
index 2af3216a..f44330b6 100644
--- a/tests/runtests.bat
+++ b/tests/runtests.bat
@@ -310,7 +310,7 @@ if errorlevel 1 exit /b 1
echo ======================================== r4rstest ...
echo (expect mult-float-print-test to fail)
-%interpret% -e "(set! ##sys#procedure->string (constantly \"#<procedure>\"))" -i -s r4rstest.scm >r4rstest.log
+%interpret% -R data-structures -e "(set! ##sys#procedure->string (constantly \"#<procedure>\"))" -i -s r4rstest.scm >r4rstest.log
if errorlevel 1 exit /b 1
type r4rstest.log
diff --git a/tests/runtests.sh b/tests/runtests.sh
index cd965f65..a3a1261c 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -37,7 +37,7 @@ mkdir -p test-repository
for x in setup-api.so setup-api.import.so setup-download.so \
setup-download.import.so chicken.import.so lolevel.import.so \
- srfi-4.import.so data-structures.import.so \
+ srfi-4.import.so chicken.data-structures.import.so \
chicken.ports.import.so chicken.utils.import.so files.import.so \
posix.import.so \
extras.import.so \
@@ -266,7 +266,7 @@ $interpret -s loopy-test.scm
echo "======================================== r4rstest ..."
echo "(expect mult-float-print-test to fail)"
-$interpret -e '(set! ##sys#procedure->string (constantly "#<procedure>"))' \
+$interpret -R data-structures -e '(set! ##sys#procedure->string (constantly "#<procedure>"))' \
-i -s r4rstest.scm >r4rstest.log
diff $DIFF_OPTS r4rstest.out r4rstest.log
diff --git a/tests/test-irregex.scm b/tests/test-irregex.scm
index 57b65596..70786392 100644
--- a/tests/test-irregex.scm
+++ b/tests/test-irregex.scm
@@ -1,7 +1,7 @@
;;;: test-irregex.scm
-(use irregex ports)
+(use data-structures irregex ports)
(include "test.scm")
diff --git a/tests/version-tests.scm b/tests/version-tests.scm
index 09769846..851850c8 100644
--- a/tests/version-tests.scm
+++ b/tests/version-tests.scm
@@ -1,4 +1,4 @@
-(use irregex)
+(use data-structures irregex)
(let* ((version-tokens (string-split (chicken-version) "."))
(major (string->number (car version-tokens)))
diff --git a/types.db b/types.db
index 4b1945ec..63c64fd7 100644
--- a/types.db
+++ b/types.db
@@ -1400,77 +1400,77 @@
;; data-structures
-(->string (procedure ->string (*) string)
+(chicken.data-structures#->string (procedure chicken.data-structures#->string (*) string)
((string) #(1)))
-(alist-ref (#(procedure #:clean #:enforce #:foldable) alist-ref (* (list-of pair) #!optional (procedure (* *) *) *) *))
-(alist-update! (#(procedure #:enforce) alist-update! (* * (list-of pair) #!optional (procedure (* *) *)) *))
-(alist-update (#(procedure #:clean #:enforce #:foldable) alist-update (* * (list-of pair) #!optional (procedure (* *) *) *) *))
+(chicken.data-structures#alist-ref (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#alist-ref (* (list-of pair) #!optional (procedure (* *) *) *) *))
+(chicken.data-structures#alist-update! (#(procedure #:enforce) chicken.data-structures#alist-update! (* * (list-of pair) #!optional (procedure (* *) *)) *))
+(chicken.data-structures#alist-update (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#alist-update (* * (list-of pair) #!optional (procedure (* *) *) *) *))
-(any? (#(procedure #:pure #:foldable) any? (*) boolean)
+(chicken.data-structures#any? (#(procedure #:pure #:foldable) chicken.data-structures#any? (*) boolean)
((*) (let ((#(tmp) #(1))) '#t)))
-(atom? (#(procedure #:pure #:foldable) atom? (*) boolean)
+(chicken.data-structures#atom? (#(procedure #:pure #:foldable) chicken.data-structures#atom? (*) boolean)
((pair) (let ((#(tmp) #(1))) '#f))
(((not (or pair list))) (let ((#(tmp) #(1))) '#t)))
-(butlast (forall (a) (#(procedure #:clean #:enforce) butlast ((pair a *)) (list-of a))))
-(chop (forall (a) (#(procedure #:clean #:enforce) chop ((list-of a) fixnum) (list-of a))))
-(complement (#(procedure #:clean #:enforce) complement ((procedure (#!rest) *)) (procedure (#!rest) boolean)))
-(compose (#(procedure #:clean #:enforce) compose (#!rest procedure) procedure))
-(compress (forall (a) (#(procedure #:clean #:enforce) compress (list (list-of a)) (list-of a))))
-(conc (procedure conc (#!rest) string))
-(conjoin (#(procedure #:clean #:enforce) conjoin (#!rest (procedure (*) *)) (procedure (*) *)))
-(constantly (forall (a) (#(procedure #:pure) constantly (a) (procedure (#!rest) a))))
-(disjoin (#(procedure #:clean #:enforce) disjoin (#!rest (procedure (*) *)) (procedure (*) *)))
-(each (#(procedure #:clean #:enforce) each (#!rest procedure) procedure))
-(flatten (#(procedure #:clean #:enforce) flatten (#!rest *) list))
-(flip (#(procedure #:clean #:enforce) flip ((procedure (* *) . *)) (procedure (* *) . *)))
-(identity (forall (a) (#(procedure #:pure #:foldable) identity (a) a)))
-(intersperse (#(procedure #:clean #:enforce) intersperse (list *) list))
-(join (#(procedure #:clean #:enforce) join ((list-of list) #!optional list) list))
-(list-of? (#(procedure #:clean #:enforce) list-of? ((procedure (*) *)) (procedure (list) boolean)))
-
-(merge
+(chicken.data-structures#butlast (forall (a) (#(procedure #:clean #:enforce) chicken.data-structures#butlast ((pair a *)) (list-of a))))
+(chicken.data-structures#chop (forall (a) (#(procedure #:clean #:enforce) chicken.data-structures#chop ((list-of a) fixnum) (list-of a))))
+(chicken.data-structures#complement (#(procedure #:clean #:enforce) chicken.data-structures#complement ((procedure (#!rest) *)) (procedure (#!rest) boolean)))
+(chicken.data-structures#compose (#(procedure #:clean #:enforce) chicken.data-structures#compose (#!rest procedure) procedure))
+(chicken.data-structures#compress (forall (a) (#(procedure #:clean #:enforce) chicken.data-structures#compress (list (list-of a)) (list-of a))))
+(chicken.data-structures#conc (procedure chicken.data-structures#conc (#!rest) string))
+(chicken.data-structures#conjoin (#(procedure #:clean #:enforce) chicken.data-structures#conjoin (#!rest (procedure (*) *)) (procedure (*) *)))
+(chicken.data-structures#constantly (forall (a) (#(procedure #:pure) chicken.data-structures#constantly (a) (procedure (#!rest) a))))
+(chicken.data-structures#disjoin (#(procedure #:clean #:enforce) chicken.data-structures#disjoin (#!rest (procedure (*) *)) (procedure (*) *)))
+(chicken.data-structures#each (#(procedure #:clean #:enforce) chicken.data-structures#each (#!rest procedure) procedure))
+(chicken.data-structures#flatten (#(procedure #:clean #:enforce) chicken.data-structures#flatten (#!rest *) list))
+(chicken.data-structures#flip (#(procedure #:clean #:enforce) chicken.data-structures#flip ((procedure (* *) . *)) (procedure (* *) . *)))
+(chicken.data-structures#identity (forall (a) (#(procedure #:pure #:foldable) chicken.data-structures#identity (a) a)))
+(chicken.data-structures#intersperse (#(procedure #:clean #:enforce) chicken.data-structures#intersperse (list *) list))
+(chicken.data-structures#join (#(procedure #:clean #:enforce) chicken.data-structures#join ((list-of list) #!optional list) list))
+(chicken.data-structures#list-of? (#(procedure #:clean #:enforce) chicken.data-structures#list-of? ((procedure (*) *)) (procedure (list) boolean)))
+
+(chicken.data-structures#merge
(forall (e)
- (#(procedure #:enforce) merge ((list-of e) (list-of e) (procedure (e e) *)) (list-of e))))
+ (#(procedure #:enforce) chicken.data-structures#merge ((list-of e) (list-of e) (procedure (e e) *)) (list-of e))))
-(merge!
+(chicken.data-structures#merge!
(forall (e)
- (#(procedure #:enforce) merge! ((list-of e) (list-of e) (procedure (e e) *)) (list-of e))))
+ (#(procedure #:enforce) chicken.data-structures#merge! ((list-of e) (list-of e) (procedure (e e) *)) (list-of e))))
-(o (#(procedure #:clean #:enforce) o (#!rest (procedure (*) *)) (procedure (*) *)))
+(chicken.data-structures#o (#(procedure #:clean #:enforce) chicken.data-structures#o (#!rest (procedure (*) *)) (procedure (*) *)))
-(rassoc (#(procedure #:clean #:enforce #:foldable) rassoc (* (list-of pair) #!optional (procedure (* *) *)) *))
-(reverse-string-append (#(procedure #:clean #:enforce) reverse-string-append ((list-of string)) string))
+(chicken.data-structures#rassoc (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#rassoc (* (list-of pair) #!optional (procedure (* *) *)) *))
+(chicken.data-structures#reverse-string-append (#(procedure #:clean #:enforce) chicken.data-structures#reverse-string-append ((list-of string)) string))
-(sort
+(chicken.data-structures#sort
(forall (e (s (or (vector-of e) (list-of e))))
- (#(procedure #:enforce)
- sort
- (s (procedure (e e) *))
+ (#(procedure #:enforce)
+ chicken.data-structures#sort
+ (s (procedure (e e) *))
s)))
-(sort!
+(chicken.data-structures#sort!
(forall (e (s (or (vector-of e) (list-of e))))
- (#(procedure #:enforce)
- sort
- (s (procedure (e e) *))
+ (#(procedure #:enforce)
+ chicken.data-structures#sort!
+ (s (procedure (e e) *))
s)))
-(sorted? (#(procedure #:enforce) sorted? ((or list vector) (procedure (* *) *)) boolean))
-(topological-sort (#(procedure #:enforce) topological-sort ((list-of list) (procedure (* *) *)) list))
-(string-chomp (#(procedure #:clean #:enforce) string-chomp (string #!optional string) string))
-(string-chop (#(procedure #:clean #:enforce) string-chop (string fixnum) (list-of string)))
-(string-compare3 (#(procedure #:clean #:enforce) string-compare3 (string string) fixnum))
-(string-compare3-ci (#(procedure #:clean #:enforce) string-compare3-ci (string string) fixnum))
-(string-intersperse (#(procedure #:clean #:enforce) string-intersperse ((list-of string) #!optional string) string))
-(string-split (#(procedure #:clean #:enforce) string-split (string #!optional string *) (list-of string)))
-(string-translate (#(procedure #:clean #:enforce) string-translate (string * #!optional *) string))
-(string-translate* (#(procedure #:clean #:enforce) string-translate* (string (list-of (pair string string))) string))
-(substring-ci=? (#(procedure #:clean #:enforce #:foldable) substring-ci=? (string string #!optional fixnum fixnum fixnum) boolean))
-
-(substring-index (#(procedure #:clean #:enforce #:foldable) substring-index (string string #!optional fixnum) (or false fixnum))
+(chicken.data-structures#sorted? (#(procedure #:enforce) chicken.data-structures#sorted? ((or list vector) (procedure (* *) *)) boolean))
+(chicken.data-structures#topological-sort (#(procedure #:enforce) chicken.data-structures#topological-sort ((list-of list) (procedure (* *) *)) list))
+(chicken.data-structures#string-chomp (#(procedure #:clean #:enforce) chicken.data-structures#string-chomp (string #!optional string) string))
+(chicken.data-structures#string-chop (#(procedure #:clean #:enforce) chicken.data-structures#string-chop (string fixnum) (list-of string)))
+(chicken.data-structures#string-compare3 (#(procedure #:clean #:enforce) chicken.data-structures#string-compare3 (string string) fixnum))
+(chicken.data-structures#string-compare3-ci (#(procedure #:clean #:enforce) chicken.data-structures#string-compare3-ci (string string) fixnum))
+(chicken.data-structures#string-intersperse (#(procedure #:clean #:enforce) chicken.data-structures#string-intersperse ((list-of string) #!optional string) string))
+(chicken.data-structures#string-split (#(procedure #:clean #:enforce) chicken.data-structures#string-split (string #!optional string *) (list-of string)))
+(chicken.data-structures#string-translate (#(procedure #:clean #:enforce) chicken.data-structures#string-translate (string * #!optional *) string))
+(chicken.data-structures#string-translate* (#(procedure #:clean #:enforce) chicken.data-structures#string-translate* (string (list-of (pair string string))) string))
+(chicken.data-structures#substring-ci=? (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#substring-ci=? (string string #!optional fixnum fixnum fixnum) boolean))
+
+(chicken.data-structures#substring-index (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#substring-index (string string #!optional fixnum) (or false fixnum))
((* *) (##sys#substring-index #(1) #(2) '0))
((* * *) (##sys#substring-index #(1) #(2) #(3))))
@@ -1479,7 +1479,7 @@
(string string fixnum)
(or false fixnum)))
-(substring-index-ci (#(procedure #:clean #:enforce #:foldable) substring-index-ci (string string #!optional fixnum) (or false fixnum))
+(chicken.data-structures#substring-index-ci (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#substring-index-ci (string string #!optional fixnum) (or false fixnum))
((* *) (##sys#substring-index-ci #(1) #(2) '0))
((* * *) (##sys#substring-index-ci #(1) #(2) #(3))))
@@ -1488,8 +1488,8 @@
(string string fixnum)
(or false fixnum)))
-(substring=? (#(procedure #:clean #:enforce #:foldable) substring=? (string string #!optional fixnum fixnum fixnum) boolean))
-(tail? (#(procedure #:clean) tail? (* *) boolean))
+(chicken.data-structures#substring=? (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#substring=? (string string #!optional fixnum fixnum fixnum) boolean))
+(chicken.data-structures#tail? (#(procedure #:clean) chicken.data-structures#tail? (* *) boolean))
;; extras
diff --git a/utils.scm b/utils.scm
index f3c1e9c2..01821db2 100644
--- a/utils.scm
+++ b/utils.scm
@@ -41,7 +41,8 @@
qs)
(import scheme chicken)
-(import data-structures extras files foreign irregex posix)
+(import extras files foreign irregex posix)
+(import chicken.data-structures)
(include "common-declarations.scm")
Trap