You are looking at historical revision 30857 of this page. It may differ significantly from its current revision.

At the very least, both utils and extras should be split out into more highly-targeted units and eventually dissolved.

Possibilities for smaller units into which many procedures already fit reasonably well:

format
format, printf, fprintf, ...
read
read-byte, ...
write
write-byte, ...

It might also be good to organize things hierarchically, in R7RS library style. Other Schemes do this to a greater or lesser degree, and it works well to differentiate built-ins from libraries. Also valuable would be to namespace, or at least alias, built-in units under (chicken ...).

(chicken data alist)
alist-ref, alist-update, ...
(chicken data ...)
...
(chicken i/o read)
...
(chicken i/o write)
...

The following is a dump of the non-SRFI units as they currently exist. Annotate with ideas for new locations as you see fit.

data-structures

->string
alist-ref
alist-update
alist-update!
any?
atom?
binary-search
butlast
chop
complement
compose
compress
conc
conjoin
constantly
disjoin
each
flatten
flip
identity
intersperse
join
list->queue
list-of?
make-queue
merge
merge!
o
queue->list
queue-add!
queue-empty?
queue-first
queue-last
queue-length
queue-push-back!
queue-push-back-list!
queue-remove!
queue?
random-seed
rassoc
reverse-string-append
sort
sort!
sorted?
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?
topological-sort

eval

chicken-home
eval
extension-information
load
load-library
load-noisily
load-relative
provide
provided?
repl
repository-path
require
set-dynamic-load-mode!

expand

er-macro-transformer
expand
get-line-number
ir-macro-transformer
syntax-error

extras

format
fprintf
pp
pretty-print
pretty-print-width
printf
random
randomize
read-byte
read-file
read-line
read-lines
read-string
read-string!
read-token
sprintf
write-byte
write-line
write-string

files

absolute-pathname?
create-temporary-directory
create-temporary-file
decompose-directory
decompose-pathname
delete-file*
directory-null?
file-copy
file-move
make-absolute-pathname
make-pathname
normalize-pathname
pathname-directory
pathname-extension
pathname-file
pathname-replace-directory
pathname-replace-extension
pathname-replace-file
pathname-strip-directory
pathname-strip-extension

library

add1
argv
arithmetic-shift
bit-set?
bitwise-and
bitwise-ior
bitwise-not
bitwise-xor
blob->string
blob-size
blob=?
blob?
build-platform
c-runtime
call/cc
char-name
chicken-version
continuation-capture
continuation-graft
continuation-return
continuation?
copy-read-table
cpu-time
current-error-port
current-gc-milliseconds
current-milliseconds
current-output-port
current-seconds
define-reader-ctor
delete-file
directory-exists?
enable-warnings
equal=?
errno
error
exit
feature?
features
file-exists?
finite?
fixnum-bits
fixnum-precision
fixnum?
flonum-decimal-precision
flonum-epsilon
flonum-maximum-decimal-exponent
flonum-maximum-exponent
flonum-minimum-decimal-exponent
flonum-minimum-exponent
flonum-precision
flonum-radix
flonum?
flush-output
foldl
foldr
fp*
fp+
fp-
fp/
fp<
fp<=
fp=
fp>
fp>=
fpabs
fpacos
fpasin
fpatan
fpatan2
fpceiling
fpcos
fpexp
fpexpt
fpfloor
fpinteger?
fplog
fpmax
fpmin
fpneg
fpround
fpsin
fpsqrt
fptan
fptruncate
fx*
fx+
fx-
fx/
fx<
fx<=
fx=
fx>
fx>=
fxand
fxeven?
fxior
fxmax
fxmin
fxmod
fxneg
fxnot
fxodd?
fxshl
fxshr
fxxor
gc
gensym
get
get-call-chain
get-environment-variable
get-keyword
get-output-string
get-properties
getenv
getter-with-setter
keyword->string
keyword?
machine-byte-order
machine-type
make-blob
maximum-flonum
memory-statistics
minimum-flonum
most-negative-fixnum
most-positive-fixnum
on-exit
open-input-string
open-output-string
port-closed?
port-name
port-position
port?
print
print*
print-call-chain
print-error-message
procedure-information
promise?
put!
quit
register-feature!
remprop!
rename-file
reset
reverse-list->string
set-finalizer!
set-gc-report!
set-parameterized-read-syntax!
set-port-name!
set-read-syntax!
set-sharp-read-syntax!
setter
signum
software-type
software-version
string->blob
string->keyword
string->uninterned-symbol
sub1
subvector
symbol-append
symbol-plist
system
unregister-feature!
vector-copy!
vector-resize
void
warning

lolevel

address->pointer
align-to-word
allocate
block-ref
block-set!
extend-procedure
extended-procedure?
free
locative->object
locative-ref
locative-set!
locative?
make-locative
make-pointer-vector
make-record-instance
make-weak-locative
move-memory!
mutate-procedure!
number-of-bytes
number-of-slots
object->pointer
object-become!
object-copy
object-evict
object-evict-to-location
object-evicted?
object-release
object-size
object-unevict
pointer+
pointer->address
pointer->object
pointer-f32-ref
pointer-f32-set!
pointer-f64-ref
pointer-f64-set!
pointer-like?
pointer-s16-ref
pointer-s16-set!
pointer-s32-ref
pointer-s32-set!
pointer-s8-ref
pointer-s8-set!
pointer-tag
pointer-u16-ref
pointer-u16-set!
pointer-u32-ref
pointer-u32-set!
pointer-u8-ref
pointer-u8-set!
pointer-vector
pointer-vector-ref
pointer-vector-set!
pointer-vector?
pointer=?
pointer?
procedure-data
record->vector
record-instance-length
record-instance-slot
record-instance-slot-set!
record-instance-type
record-instance?
set!
set-procedure-data!
tag-pointer
tagged-pointer?
vector-like?

ports

call-with-input-string
call-with-output-string
copy-port
make-broadcast-port
make-concatenated-port
make-input-port
make-output-port
port-fold
port-for-each
port-map
with-error-output-to-port
with-input-from-port
with-input-from-string
with-output-to-port
with-output-to-string

posix

_exit
block-device?
call-with-input-pipe
call-with-output-pipe
change-directory
change-directory*
change-file-mode
change-file-owner
character-device?
close-input-pipe
close-output-pipe
create-directory
create-fifo
create-pipe
create-session
create-symbolic-link
current-directory
current-effective-group-id
current-effective-user-id
current-group-id
current-process-id
current-user-id
delete-directory
directory
directory?
duplicate-fileno
errno/acces
errno/again
errno/badf
errno/busy
errno/child
errno/exist
errno/fault
errno/intr
errno/inval
errno/io
errno/isdir
errno/mfile
errno/noent
errno/noexec
errno/nomem
errno/nospc
errno/notdir
errno/perm
errno/pipe
errno/rofs
errno/spipe
errno/srch
errno/wouldblock
fcntl/dupfd
fcntl/getfd
fcntl/getfl
fcntl/setfd
fcntl/setfl
fifo?
file-access-time
file-change-time
file-close
file-control
file-creation-mode
file-execute-access?
file-link
file-lock
file-lock/blocking
file-mkstemp
file-modification-time
file-open
file-owner
file-permissions
file-position
file-read
file-read-access?
file-select
file-size
file-stat
file-test-lock
file-truncate
file-type
file-unlock
file-write
file-write-access?
fileno/stderr
fileno/stdin
fileno/stdout
find-files
get-environment-variables
get-groups
get-host-name
glob
group-information
initialize-groups
local-time->seconds
local-timezone-abbreviation
map-file-to-memory
memory-mapped-file-pointer
memory-mapped-file?
open-input-file*
open-input-pipe
open-output-file*
open-output-pipe
open/append
open/binary
open/creat
open/excl
open/fsync
open/noctty
open/nonblock
open/rdonly
open/rdwr
open/read
open/sync
open/text
open/trunc
open/write
open/wronly
parent-process-id
perm/irgrp
perm/iroth
perm/irusr
perm/irwxg
perm/irwxo
perm/irwxu
perm/isgid
perm/isuid
perm/isvtx
perm/iwgrp
perm/iwoth
perm/iwusr
perm/ixgrp
perm/ixoth
perm/ixusr
port->fileno
process
process*
process-execute
process-fork
process-group-id
process-run
process-signal
process-spawn
process-wait
read-symbolic-link
regular-file?
seconds->local-time
seconds->string
seconds->utc-time
set!
set-alarm!
set-buffering-mode!
set-file-position!
set-groups!
set-process-group-id!
set-root-directory!
set-signal-handler!
set-signal-mask!
setenv
signal-handler
signal-mask
signal-mask!
signal-masked?
signal-unmask!
signal/abrt
signal/alrm
signal/chld
signal/cont
signal/fpe
signal/hup
signal/ill
signal/int
signal/io
signal/kill
signal/pipe
signal/prof
signal/quit
signal/segv
signal/stop
signal/term
signal/trap
signal/tstp
signal/urg
signal/usr1
signal/usr2
signal/vtalrm
signal/winch
signal/xcpu
signal/xfsz
sleep
socket?
string->time
symbolic-link?
system-information
terminal-name
terminal-port?
terminal-size
time->string
unmap-file-from-memory
unsetenv
user-information
utc-time->seconds
with-input-from-pipe
with-output-to-pipe

utils

compile-file
compile-file-options
qs
read-all
scan-input-lines
system*
yes-or-no?