extending (scheme red)

This commit is contained in:
Alex Shinn 2018-01-24 23:54:09 +09:00
parent ab88f53e48
commit eb38a5836a
7 changed files with 809 additions and 391 deletions

31
lib/scheme/ideque.sld Normal file
View file

@ -0,0 +1,31 @@
(define-library (scheme ideque)
(import (srfi 134))
(export ideque ideque-tabulate ideque-unfold ideque-unfold-right
ideque? ideque-empty? ideque= ideque-any ideque-every
ideque-front ideque-add-front ideque-remove-front
ideque-back ideque-add-back ideque-remove-back
ideque-ref
ideque-take ideque-take-right ideque-drop ideque-drop-right
ideque-split-at
ideque-length ideque-append ideque-reverse
ideque-count ideque-zip
ideque-map ideque-filter-map
ideque-for-each ideque-for-each-right
ideque-fold ideque-fold-right
ideque-append-map
ideque-filter ideque-remove ideque-partition
ideque-find ideque-find-right
ideque-take-while ideque-take-while-right
ideque-drop-while ideque-drop-while-right
ideque-span ideque-break
list->ideque ideque->list
generator->ideque ideque->generator
))

25
lib/scheme/lseq.sld Normal file
View file

@ -0,0 +1,25 @@
(define-library (scheme lseq)
(import (srfi 127))
(export
;; Constructors
generator->lseq
;; Predicates
lseq? lseq=?
;; Selectors
lseq-car lseq-cdr
lseq-first lseq-rest lseq-ref
lseq-take lseq-drop
;; The whole lazy sequence
lseq-realize lseq->generator
lseq-length
lseq-append lseq-zip
;; Mapping and filtering
lseq-map lseq-for-each
lseq-filter lseq-remove
;; Searching
lseq-find lseq-find-tail
lseq-any lseq-every
lseq-index
lseq-take-while lseq-drop-while
lseq-member lseq-memq lseq-memv))

View file

@ -14,16 +14,22 @@
(scheme file) (scheme file)
(scheme generator) (scheme generator)
(scheme hash-table) (scheme hash-table)
(scheme ideque)
(scheme ilist) (scheme ilist)
(scheme inexact) (scheme inexact)
(scheme lazy) (scheme lazy)
(scheme list-queue) (scheme list-queue)
(scheme list) (scheme list)
(scheme load) (scheme load)
(scheme lseq)
(scheme process-context) (scheme process-context)
(scheme read) (scheme read)
(scheme repl) (scheme repl)
(scheme rlist)
(scheme set)
(scheme sort) (scheme sort)
(scheme stream)
(scheme text)
(scheme time) (scheme time)
(scheme vector) (scheme vector)
(scheme write)) (scheme write))
@ -38,235 +44,294 @@
>= >=? >= >=?
>? _ >? _
abs acos abs acos
alist->hash-table alist->bag alist->hash-table
alist-cons alist-copy alist-cons alist-copy
alist-delete alist-delete! alist-delete alist-delete!
and angle and angle
any append any append
append! append! append-map
append-map append-map! append-map! append-reverse
append-reverse append-reverse! append-reverse! apply
apply asin assoc
asin assq assv
assoc assq atan bag
assv atan bag->alist bag->list
begin bag->set bag->set
binary-port? bag-adjoin bag-adjoin!
boolean-hash boolean=? bag-any? bag-comparator
boolean? box bag-comparator bag-contains?
box? break bag-copy bag-count
break! bytevector bag-decrement! bag-decrement!
bytevector->generator bytevector-append bag-delete bag-delete!
bytevector-copy bytevector-copy! bag-delete-all bag-delete-all!
bytevector-length bytevector-u8-ref bag-difference bag-difference!
bytevector-u8-set! bytevector? bag-disjoint? bag-element-comparator
caaaar caaadr bag-element-count bag-element-count
caaar caadar bag-empty? bag-every?
caaddr caadr bag-filter bag-filter!
caar cadaar bag-find bag-fold
cadadr cadar bag-fold-unique bag-fold-unique
caddar cadddr bag-for-each bag-for-each-unique
caddr cadr bag-for-each-unique bag-increment!
call-with-current-continuation call-with-input-file bag-increment! bag-intersection
call-with-output-file bag-intersection! bag-map
call-with-port bag-member bag-partition
call-with-values call/cc bag-partition! bag-product
car car+cdr bag-product bag-product!
case case-lambda bag-product! bag-remove
cdaaar cdaadr bag-remove! bag-replace
cdaar cdadar bag-replace! bag-search!
cdaddr cdadr bag-size bag-sum
cdar cddaar bag-sum bag-sum!
cddadr cddar bag-sum! bag-unfold
cdddar cddddr bag-union bag-union!
cdddr cddr bag-unique-size bag-xor
cdr ceiling bag-xor! bag<=?
char->integer char-alphabetic? bag<? bag=?
char-ci-hash char-ci<=? bag>=? bag>?
char-ci<? char-ci=? bag? begin
char-ci>=? char-ci>? binary-port? boolean-hash
char-downcase char-foldcase boolean=? boolean?
char-hash char-lower-case? box box?
char-numeric? char-ready? break break!
char-set char-set->list bytevector bytevector->generator
char-set->string char-set-adjoin bytevector-append bytevector-copy
char-set-adjoin! char-set-any bytevector-copy! bytevector-length
char-set-complement char-set-complement! bytevector-u8-ref bytevector-u8-set!
char-set-contains? char-set-copy bytevector? caaaar
char-set-count char-set-cursor caaadr caaar
char-set-cursor-next char-set-delete caadar caaddr
char-set-delete! char-set-diff+intersection caadr caar
char-set-diff+intersection! char-set-difference cadaar cadadr
char-set-difference! char-set-every cadar caddar
char-set-filter char-set-filter! cadddr caddr
char-set-fold char-set-for-each cadr call-with-current-continuation
char-set-hash char-set-intersection call-with-input-file call-with-output-file
char-set-intersection! char-set-map call-with-port call-with-values
char-set-ref char-set-size call/cc car
char-set-unfold char-set-unfold! car+cdr case
char-set-union char-set-union! case-lambda cdaaar
char-set-xor char-set-xor! cdaadr cdaar
char-set:ascii char-set:blank cdadar cdaddr
char-set:digit char-set:empty cdadr cdar
char-set:full char-set:graphic cddaar cddadr
char-set:hex-digit char-set:iso-control cddar cdddar
char-set:letter char-set:letter+digit cddddr cdddr
char-set:lower-case char-set:printing cddr cdr
char-set:punctuation char-set:symbol ceiling char->integer
char-set:title-case char-set:upper-case char-alphabetic? char-ci-hash
char-set:whitespace char-set<= char-ci<=? char-ci<?
char-set= char-upcase char-ci=? char-ci>=?
char-upper-case? char-whitespace? char-ci>? char-downcase
char<=? char<? char-foldcase char-hash
char=? char>=? char-lower-case? char-numeric?
char>? char? char-ready? char-set
circular-list circular-list? char-set->list char-set->string
close-input-port close-output-port char-set-adjoin char-set-adjoin!
close-port char-set-any char-set-complement
char-set-complement! char-set-contains?
char-set-copy char-set-count
char-set-cursor char-set-cursor-next
char-set-delete char-set-delete!
char-set-diff+intersection char-set-diff+intersection!
char-set-difference char-set-difference!
char-set-every char-set-filter
char-set-filter! char-set-fold
char-set-for-each char-set-hash
char-set-intersection char-set-intersection!
char-set-map char-set-ref
char-set-size char-set-unfold
char-set-unfold! char-set-union
char-set-union! char-set-xor
char-set-xor! char-set:ascii
char-set:blank char-set:digit
char-set:empty char-set:full
char-set:graphic char-set:hex-digit
char-set:iso-control char-set:letter
char-set:letter+digit char-set:lower-case
char-set:printing char-set:punctuation
char-set:symbol char-set:title-case
char-set:upper-case char-set:whitespace
char-set<= char-set=
char-upcase char-upper-case?
char-whitespace? char<=?
char<? char=?
char>=? char>?
char? circular-list
circular-list? close-input-port
close-output-port close-port
command-line comparator-check-type command-line comparator-check-type
comparator-equality-predicate comparator-hash comparator-equality-predicate comparator-hash
comparator-hash-function comparator-hashable? comparator-hash-function comparator-hashable?
comparator-if<=> comparator-ordered? comparator-if<=> comparator-ordered?
comparator-ordering-predicate comparator-register-default! comparator-ordering-predicate comparator-register-default!
comparator-test-type comparator-type-test-predicate comparator-test-type comparator-type-test-predicate
comparator? comparator? complex?
complex? concatenate concatenate concatenate!
concatenate! cond cond cond-expand
cond-expand cons cons cons*
cons* cos count
cos current-error-port current-input-port
count current-jiffy current-output-port
current-error-port
current-input-port current-jiffy
current-output-port
current-second default-hash current-second default-hash
define define define-record-type
define-record-type define-syntax define-stream define-syntax
define-values delay define-values delay
delay-force delete delay-force delete
delete! delete-duplicates delete! delete-duplicates
delete-duplicates! delete-file delete-duplicates! delete-file
denominator denominator digit-value
digit-value display display do
do dotted-list? dotted-list? drop
drop drop-right drop-right drop-right!
drop-right! drop-while drop-while dynamic-wind
dynamic-wind eighth eighth else
else emergency-exit emergency-exit end-of-char-set?
end-of-char-set? environment eof-object
environment eof-object? ephemeron-broken?
eof-object eof-object? ephemeron-datum ephemeron-key
ephemeron-broken? ephemeron-key ephemeron? eq?
ephemeron-datum ephemeron? equal? eqv?
eq? equal?
eqv?
error eval error eval
even? every even? every
exact exact exact-integer-sqrt
exact-integer-sqrt exact-integer? exact?
exact-integer?
exact?
exit exp exit exp
expt features expt features
fifth file-error? fifth file-error?
file-exists? file-exists? filter
filter filter! filter! filter-map
filter-map find find find-tail
find-tail
finite? first finite? first
floor floor-quotient floor floor-quotient
floor-remainder floor/ floor-remainder floor/
flush-output-port flush-output-port fold
fold fold-right fold-right for-each
for-each force force fourth
fourth gappend gappend gcd
gcd
gcombine gcons* gcombine gcons*
gdelete gdelete-neighbor-dups gdelete gdelete-neighbor-dups
gdrop gdrop-while gdrop gdrop-while
generator generator generator->ideque
generator->list generator->reverse-list generator->list generator->lseq
generator->string generator->vector generator->reverse-list generator->string
generator->vector! generator-any generator->vector generator->vector!
generator-count generator-every generator-any generator-count
generator-find generator-fold generator-every generator-find
generator-for-each generator-unfold generator-fold generator-for-each
get-environment-variable get-environment-variables generator-unfold get-environment-variable
get-output-bytevector get-output-string get-environment-variables get-output-bytevector
gfilter gindex get-output-string gfilter
gremove gselect gindex gremove
gtake gtake-while gselect gtake
gtree->itree gtree->tree gtake-while gtree->itree
guard hash gtree->tree guard
hash-bound hash-by-identity hash hash-bound
hash-salt hash-table hash-by-identity hash-salt
hash-table->alist hash-table-clear! hash-table hash-table->alist
hash-table-contains? hash-table-copy hash-table-clear! hash-table-contains?
hash-table-count hash-table-delete! hash-table-copy hash-table-count
hash-table-difference! hash-table-empty-copy hash-table-delete! hash-table-difference!
hash-table-empty? hash-table-entries hash-table-empty-copy hash-table-empty?
hash-table-equivalence-function hash-table-exists? hash-table-entries hash-table-equivalence-function
hash-table-find hash-table-fold hash-table-exists? hash-table-find
hash-table-for-each hash-table-hash-function hash-table-fold hash-table-for-each
hash-table-intern! hash-table-intersection! hash-table-hash-function hash-table-intern!
hash-table-keys hash-table-map hash-table-intersection! hash-table-keys
hash-table-map! hash-table-map->list hash-table-map hash-table-map!
hash-table-merge! hash-table-mutable? hash-table-map->list hash-table-merge!
hash-table-pop! hash-table-prune! hash-table-mutable? hash-table-pop!
hash-table-ref hash-table-ref/default hash-table-prune! hash-table-ref
hash-table-set! hash-table-size hash-table-ref/default hash-table-set!
hash-table-unfold hash-table-union! hash-table-size hash-table-unfold
hash-table-update! hash-table-update!/default hash-table-union! hash-table-update!
hash-table-values hash-table-walk hash-table-update!/default hash-table-values
hash-table-xor! hash-table=? hash-table-walk hash-table-xor!
hash-table? hash-table=? hash-table?
ideque ideque->generator
ideque->list ideque-add-back
ideque-add-front ideque-any
ideque-append ideque-append-map
ideque-back ideque-break
ideque-count ideque-drop
ideque-drop-right ideque-drop-while
ideque-drop-while-right ideque-empty?
ideque-every ideque-filter
ideque-filter-map ideque-find
ideque-find-right ideque-fold
ideque-fold-right ideque-for-each
ideque-for-each-right ideque-front
ideque-length ideque-map
ideque-partition ideque-ref
ideque-remove ideque-remove-back
ideque-remove-front ideque-reverse
ideque-span ideque-split-at
ideque-tabulate ideque-take
ideque-take-right ideque-take-while
ideque-take-while-right ideque-unfold
ideque-unfold-right ideque-zip
ideque= ideque?
if ilist->list if ilist->list
ilist-comparator ilist-tail ilist-comparator ilist-tail
imag-part imag-part include
include include-ci include-ci inexact
inexact
inexact? infinite? inexact? infinite?
input-port-open? input-port? input-port-open? input-port?
integer->char integer? integer->char integer?
interaction-environment iota interaction-environment iota
ipair->pair ipair-comparator ipair->pair ipair-comparator
iq iq itree->tree
itree->tree
jiffies-per-second lambda jiffies-per-second lambda
last last-pair last last-pair
lcm lcm length
length
length+ let length+ let
let* let*-values let* let*-values
let-syntax let-syntax let-values
let-values letrec letrec letrec*
letrec* letrec-syntax letrec-syntax list
list list->char-set list->bag list->bag!
list->char-set! list->generator list->char-set list->char-set!
list->ilist list->string list->generator list->ideque
list->vector list-copy list->ilist list->rlist
list-delete-neighbor-dups list-delete-neighbor-dups! list->set list->set
list-index list-merge list->set! list->set!
list-merge! list-queue list->stream list->string
list-queue-add-back! list-queue-add-front! list->text list->vector
list-queue-append list-queue-append! list-copy list-delete-neighbor-dups
list-queue-back list-queue-concatenate list-delete-neighbor-dups! list-index
list-queue-copy list-queue-empty? list-merge list-merge!
list-queue-first-last list-queue-for-each list-queue list-queue-add-back!
list-queue-front list-queue-list list-queue-add-front! list-queue-append
list-queue-map list-queue-map! list-queue-append! list-queue-back
list-queue-remove-all! list-queue-remove-back! list-queue-concatenate list-queue-copy
list-queue-remove-front! list-queue-set-list! list-queue-empty? list-queue-first-last
list-queue-unfold list-queue-unfold-right list-queue-for-each list-queue-front
list-queue? list-ref list-queue-list list-queue-map
list-set! list-sort list-queue-map! list-queue-remove-all!
list-sort! list-sorted? list-queue-remove-back! list-queue-remove-front!
list-stable-sort list-stable-sort! list-queue-set-list! list-queue-unfold
list-tabulate list-tail list-queue-unfold-right list-queue?
list= list? list-ref list-set!
load list-sort list-sort!
log list-sorted? list-stable-sort
lset-adjoin list-stable-sort! list-tabulate
list-tail list=
list? load
log lseq->generator
lseq-any lseq-append
lseq-car lseq-cdr
lseq-drop lseq-drop-while
lseq-every lseq-filter
lseq-find lseq-find-tail
lseq-first lseq-for-each
lseq-index lseq-length
lseq-map lseq-member
lseq-memq lseq-memv
lseq-realize lseq-ref
lseq-remove lseq-rest
lseq-take lseq-take-while
lseq-zip lseq=?
lseq? lset-adjoin
lset-diff+intersection lset-diff+intersection! lset-diff+intersection lset-diff+intersection!
lset-difference lset-difference! lset-difference lset-difference!
lset-intersection lset-intersection! lset-intersection lset-intersection!
@ -274,12 +339,10 @@
lset-xor lset-xor! lset-xor lset-xor!
lset<= lset= lset<= lset=
magnitude make-bytevector magnitude make-bytevector
make-comparator make-comparator make-coroutine-generator
make-coroutine-generator make-default-comparator make-default-comparator make-ephemeron
make-ephemeron
make-eq-comparator make-equal-comparator make-eq-comparator make-equal-comparator
make-eqv-comparator make-eqv-comparator make-for-each-generator
make-for-each-generator
make-hash-table make-icar-comparator make-hash-table make-icar-comparator
make-icdr-comparator make-improper-ilist-comparator make-icdr-comparator make-improper-ilist-comparator
make-iota-generator make-list make-iota-generator make-list
@ -287,106 +350,223 @@
make-pair-comparator make-parameter make-pair-comparator make-parameter
make-polar make-promise make-polar make-promise
make-range-generator make-rectangular make-range-generator make-rectangular
make-string make-rlist make-string
make-unfold-generator make-vector make-text make-unfold-generator
make-vector-comparator map make-vector make-vector-comparator
map! map-in-order map map!
max member map-in-order max
memq memv member memq
min modulo memv min
nan? negative? modulo nan?
newline ninth negative? newline
not not-ipair? ninth not
not-pair? not-ipair? not-pair?
null-list? null? null-list? null?
number->string number-hash number->string number-hash
number? numerator number? numerator
odd? odd? open-binary-input-file
open-binary-input-file open-binary-output-file open-binary-output-file open-input-bytevector
open-input-bytevector open-input-file open-input-file open-input-string
open-input-string
open-output-bytevector open-output-file open-output-bytevector open-output-file
open-output-string open-output-string or
or output-port-open? output-port-open? output-port?
output-port? pair->ipair pair->ipair pair-fold
pair-fold pair-fold-right pair-fold-right pair-for-each
pair-for-each pair? parameterize
pair? partition partition!
parameterize partition peek-char peek-u8
partition! peek-char port->stream port?
peek-u8 positive? procedure?
port? positive?
procedure?
promise? proper-list? promise? proper-list?
quasiquote quote quasiquote quote
quotient raise quotient raise
raise-continuable raise-continuable rappend
rational? rationalize rational? rationalize
read read-bytevector rcaaaar rcaaadr
read-bytevector! read-char rcaaar rcaadar
read-error? read-line rcaaddr rcaadr
read-string read-u8 rcaar rcadaar
real-part rcadadr rcadar
rcaddar rcadddr
rcaddr rcadr
rcar rcdaaar
rcdaadr rcdaar
rcdadar rcdaddr
rcdadr rcdar
rcddaar rcddadr
rcddar rcdddar
rcddddr rcdddr
rcddr rcdr
rcons read
read-bytevector read-bytevector!
read-char read-error?
read-line read-string
read-u8 real-part
real? reduce real? reduce
reduce-right reduce-right remainder
remainder
remove remove! remove remove!
replace-icar replace-icdr replace-icar replace-icdr
reverse reverse! reverse reverse!
reverse-list->vector reverse-vector->generator reverse-list->text reverse-list->vector
reverse-vector->list reverse-vector->generator reverse-vector->list
round rfor-each rlength
second set! rlist rlist->list
set-box! set-car! rlist-ref rlist-ref/update
set-cdr! rlist-set rlist-tail
rlist? rmap
rnull? round
rpair? rquote
rreverse second
set set
set! set->bag
set->bag set->bag!
set->bag! set->list
set->list set-adjoin
set-adjoin set-adjoin!
set-adjoin! set-any?
set-any? set-box!
set-car! set-cdr!
set-comparator set-comparator
set-contains? set-contains?
set-copy set-copy
set-count set-count
set-delete set-delete
set-delete! set-delete!
set-delete-all set-delete-all
set-delete-all! set-delete-all!
set-difference set-difference
set-difference! set-difference!
set-disjoint? set-disjoint?
set-element-comparator set-element-comparator
set-empty? set-empty?
set-every? set-every?
set-filter set-filter
set-filter! set-filter!
set-find set-find
set-fold set-fold
set-for-each set-for-each
set-intersection set-intersection
set-intersection! set-intersection!
set-map set-map
set-member set-member
set-partition set-partition
set-partition! set-partition!
set-remove set-remove
set-remove! set-remove!
set-replace set-replace
set-replace! set-replace!
set-search! set-search!
set-size set-size
set-unfold set-unfold
set-union set-union
set-union! set-union!
set-xor set-xor
set-xor! set-xor!
set<=? set<=?
set<? set<?
set=? set=?
set>=? set>=?
set>? set>?
set? set?
seventh sin seventh sin
sixth sixth span
span
span! split-at span! split-at
split-at! sqrt split-at! sqrt
square string square stream
stream->list stream-append
stream-car stream-cdr
stream-concat stream-cons
stream-constant stream-drop
stream-drop-while stream-filter
stream-fold stream-for-each
stream-from stream-iterate
stream-lambda stream-length
stream-let stream-map
stream-match stream-null
stream-null? stream-of
stream-pair? stream-range
stream-ref stream-reverse
stream-scan stream-take
stream-take-while stream-unfold
stream-unfolds stream-zip
stream? string
string->char-set string->char-set! string->char-set string->char-set!
string->generator string->list string->generator string->list
string->number string->symbol string->number string->symbol
string->utf8 string->vector string->text string->utf8
string-append string-ci-hash string->vector string-append
string-ci<=? string-ci<? string-ci-hash string-ci<=?
string-ci=? string-ci>=? string-ci<? string-ci=?
string-ci>? string-ci>=? string-ci>?
string-copy string-copy! string-copy string-copy!
string-downcase string-fill! string-downcase string-fill!
string-foldcase string-for-each string-foldcase string-for-each
string-hash string-hash string-length
string-length string-map string-map string-ref
string-ref string-set! string-set! string-upcase
string-upcase
string<=? string<? string<=? string<?
string=? string>=? string=? string>=?
string>? string? string>? string?
substring substring subtext
symbol->string symbol-hash subtextual symbol->string
symbol=? symbol? symbol-hash symbol=?
syntax-error symbol? syntax-error
syntax-rules syntax-rules take
take
take! take-right take! take-right
take-while take-while! take-while take-while!
tan tenth tan tenth
textual-port? third text text-length
tree->itree text-ref text-tabulate
text-unfold text-unfold-right
text? textual->list
textual->string textual->text
textual->utf16 textual->utf16be
textual->utf16le textual->utf8
textual->vector textual-any
textual-append textual-ci<=?
textual-ci<? textual-ci=?
textual-ci>=? textual-ci>?
textual-concatenate textual-concatenate-reverse
textual-contains textual-contains-right
textual-copy textual-count
textual-downcase textual-drop
textual-drop-right textual-every
textual-filter textual-fold
textual-fold-right textual-foldcase
textual-for-each textual-for-each-index
textual-index textual-index-right
textual-join textual-length
textual-map textual-map-index
textual-null? textual-pad
textual-pad-right textual-port?
textual-prefix-length textual-prefix?
textual-ref textual-remove
textual-replace textual-replicate
textual-skip textual-skip-right
textual-split textual-suffix-length
textual-suffix? textual-take
textual-take-right textual-titlecase
textual-trim textual-trim-both
textual-trim-right textual-upcase
textual<=? textual<?
textual=? textual>=?
textual>? textual?
third tree->itree
truncate truncate-quotient truncate truncate-quotient
truncate-remainder truncate/ truncate-remainder truncate/
u8-ready? u8-ready? ucs-range->char-set
ucs-range->char-set ucs-range->char-set! ucs-range->char-set! unbox
unbox unfold unfold unfold-right
unfold-right unless unless unquote
unquote unquote-splicing unquote-splicing unzip1
unzip1 unzip2 unzip2 unzip3
unzip3 unzip4 unzip4 unzip5
unzip5 utf8->string utf16->text utf16be->text
values vector utf16le->text utf8->string
vector->generator vector->list utf8->text values
vector->string vector-any vector vector->generator
vector->list vector->string
vector->text vector-any
vector-append vector-append-subvectors vector-append vector-append-subvectors
vector-binary-search vector-concatenate vector-binary-search vector-concatenate
vector-copy vector-copy! vector-copy vector-copy!
@ -410,13 +590,11 @@
vector-swap! vector-unfold vector-swap! vector-unfold
vector-unfold! vector-unfold-right vector-unfold! vector-unfold-right
vector-unfold-right! vector= vector-unfold-right! vector=
vector? vector? when
when with-exception-handler with-exception-handler with-input-from-file
with-input-from-file
with-output-to-file write with-output-to-file write
write-bytevector write-char write-bytevector write-char
write-string write-u8 write-string write-u8
xcons xcons zero?
zero?
zip zip
)) ))

53
lib/scheme/rlist.sld Normal file
View file

@ -0,0 +1,53 @@
(define-library (scheme rlist)
(import (srfi 101))
(export (rename quote rquote)
(rename pair? rpair?)
(rename cons rcons)
(rename car rcar)
(rename cdr rcdr)
(rename caar rcaar)
(rename cadr rcadr)
(rename cddr rcddr)
(rename cdar rcdar)
(rename caaar rcaaar)
(rename caadr rcaadr)
(rename caddr rcaddr)
(rename cadar rcadar)
(rename cdaar rcdaar)
(rename cdadr rcdadr)
(rename cdddr rcdddr)
(rename cddar rcddar)
(rename caaaar rcaaaar)
(rename caaadr rcaaadr)
(rename caaddr rcaaddr)
(rename caadar rcaadar)
(rename cadaar rcadaar)
(rename cadadr rcadadr)
(rename cadddr rcadddr)
(rename caddar rcaddar)
(rename cdaaar rcdaaar)
(rename cdaadr rcdaadr)
(rename cdaddr rcdaddr)
(rename cdadar rcdadar)
(rename cddaar rcddaar)
(rename cddadr rcddadr)
(rename cddddr rcddddr)
(rename cdddar rcdddar)
(rename null? rnull?)
(rename list? rlist?)
(rename list rlist)
(rename make-list make-rlist)
(rename length rlength)
(rename append rappend)
(rename reverse rreverse)
(rename list-tail rlist-tail)
(rename list-ref rlist-ref)
(rename list-set rlist-set)
(rename list-ref/update rlist-ref/update)
(rename map rmap)
(rename for-each rfor-each)
(rename random-access-list->linear-access-list
rlist->list)
(rename linear-access-list->random-access-list
list->rlist)))

60
lib/scheme/set.sld Normal file
View file

@ -0,0 +1,60 @@
(define-library (scheme set)
(import (srfi 113))
(export
set set-contains? set-unfold
;; Predicates:
set? set-empty? set-disjoint?
;; Accessors:
set-member set-element-comparator
;; Updaters:
set-adjoin set-adjoin! set-replace set-replace!
set-delete set-delete! set-delete-all set-delete-all!
set-search!
;; The whole set:
set-size set-find set-count set-any? set-every?
;; Mapping and folding:
set-map set-for-each set-fold set-filter set-filter!
set-remove set-remove! set-partition set-partition!
;; Copying and conversion:
set-copy set->list list->set list->set!
;; Subsets:
set=? set<? set>? set<=? set>=?
;; Set theory operations:
set-union set-intersection set-difference set-xor
set-union! set-intersection! set-difference! set-xor!
;; Comparators:
set-comparator
;; Constructors:
bag bag-contains? bag-unfold
;; Predicates:
bag? bag-empty? bag-disjoint?
;; Accessors:
bag-member bag-element-comparator
;; Updaters:
bag-adjoin bag-adjoin! bag-replace bag-replace!
bag-delete bag-delete! bag-delete-all bag-delete-all!
bag-search!
;; The whole bag:
bag-size bag-find bag-count bag-any? bag-every?
;; Mapping and folding:
bag-map bag-for-each bag-fold bag-filter bag-filter!
bag-remove bag-remove! bag-partition bag-partition!
;; Copying and conversion:
bag-copy bag->list list->bag list->bag!
;; Subbags:
bag=? bag<? bag>? bag<=? bag>=?
;; Bag theory operations:
bag-union bag-intersection bag-difference bag-xor
bag-union! bag-intersection! bag-difference! bag-xor!
;; Comparators:
bag-comparator
;; Additional bag procedures:
bag-unique-size
bag-sum bag-sum! bag-product bag-product! bag-element-count
bag-for-each-unique bag-fold-unique bag-increment! bag-decrement!
bag->set set->bag set->bag!
bag->alist alist->bag
))

12
lib/scheme/stream.sld Normal file
View file

@ -0,0 +1,12 @@
(define-library (scheme stream)
(import (srfi 41))
(export
stream-null stream-cons stream? stream-null? stream-pair?
stream-car stream-cdr stream-lambda
define-stream list->stream port->stream stream stream->list
stream-append stream-concat stream-constant stream-drop
stream-drop-while stream-filter stream-fold stream-for-each stream-from
stream-iterate stream-length stream-let stream-map stream-match _
stream-of stream-range stream-ref stream-reverse stream-scan stream-take
stream-take-while stream-unfold stream-unfolds stream-zip))

59
lib/scheme/text.sld Normal file
View file

@ -0,0 +1,59 @@
(define-library (scheme text)
(import (srfi 135))
(export
;; Predicates
text? textual?
textual-null?
textual-every textual-any
;; Constructors
make-text text
text-tabulate
text-unfold text-unfold-right
;; Conversion
textual->text
textual->string textual->vector textual->list
string->text vector->text list->text reverse-list->text
textual->utf8 textual->utf16be
textual->utf16 textual->utf16le
utf8->text utf16be->text
utf16->text utf16le->text
;; Selection
text-length textual-length
text-ref textual-ref
subtext subtextual
textual-copy
textual-take textual-take-right
textual-drop textual-drop-right
textual-pad textual-pad-right
textual-trim textual-trim-right textual-trim-both
;; Replacement
textual-replace
;; Comparison
textual=? textual-ci=?
textual<? textual-ci<?
textual>? textual-ci>?
textual<=? textual-ci<=?
textual>=? textual-ci>=?
;; Prefixes & suffixes
textual-prefix-length textual-suffix-length
textual-prefix? textual-suffix?
;; Searching
textual-index textual-index-right
textual-skip textual-skip-right
textual-contains textual-contains-right
;; Case conversion
textual-upcase textual-downcase
textual-foldcase textual-titlecase
;; Concatenation
textual-append textual-concatenate textual-concatenate-reverse
textual-join
;; Fold & map & friends
textual-fold textual-fold-right
textual-map textual-for-each
textual-map-index textual-for-each-index
textual-count
textual-filter textual-remove
;; Replication & splitting
textual-replicate textual-split
))