adding (scheme red) and associated srfi aliases

This commit is contained in:
Alex Shinn 2017-10-06 23:53:22 +09:00
parent 70d61e1fcc
commit cc92ecf2bc
13 changed files with 732 additions and 1 deletions

View file

@ -48,7 +48,7 @@ MODULE_DOCS := app ast config disasm equiv filesystem generic heap-stats io \
system test time trace type-inference uri weak monad/environment \ system test time trace type-inference uri weak monad/environment \
show show/base crypto/sha2 show show/base crypto/sha2
IMAGE_FILES = lib/chibi.img lib/snow.img IMAGE_FILES = lib/chibi.img lib/red.img lib/snow.img
HTML_LIBS = $(MODULE_DOCS:%=doc/lib/chibi/%.html) HTML_LIBS = $(MODULE_DOCS:%=doc/lib/chibi/%.html)
@ -169,6 +169,9 @@ lib/chibi/ast$(SO): lib/chibi/ast.c $(INCLUDES) libchibi-scheme$(SO)
lib/chibi.img: $(CHIBI_DEPENDENCIES) all-libs lib/chibi.img: $(CHIBI_DEPENDENCIES) all-libs
$(CHIBI) -d $@ $(CHIBI) -d $@
lib/red.img: $(CHIBI_DEPENDENCIES) all-libs
$(CHIBI) -xscheme.red -d $@
lib/snow.img: $(CHIBI_DEPENDENCIES) all-libs lib/snow.img: $(CHIBI_DEPENDENCIES) all-libs
$(CHIBI) -mchibi.snow.commands -mchibi.snow.interface -mchibi.snow.package -mchibi.snow.utils -d $@ $(CHIBI) -mchibi.snow.commands -mchibi.snow.interface -mchibi.snow.package -mchibi.snow.utils -d $@
@ -362,6 +365,7 @@ install: install-base
ifneq "$(IMAGE_FILES)" "" ifneq "$(IMAGE_FILES)" ""
echo "Generating images" echo "Generating images"
-cd / && LD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(LD_LIBRARY_PATH)" DYLD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(DYLD_LIBRARY_PATH)" $(DESTDIR)$(BINDIR)/chibi-scheme$(EXE) -d $(DESTDIR)$(MODDIR)/chibi.img -cd / && LD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(LD_LIBRARY_PATH)" DYLD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(DYLD_LIBRARY_PATH)" $(DESTDIR)$(BINDIR)/chibi-scheme$(EXE) -d $(DESTDIR)$(MODDIR)/chibi.img
-cd / && LD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(LD_LIBRARY_PATH)" DYLD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(DYLD_LIBRARY_PATH)" $(DESTDIR)$(BINDIR)/chibi-scheme$(EXE) -xscheme.red -d $(DESTDIR)$(MODDIR)/red.img
-cd / && LD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(LD_LIBRARY_PATH)" DYLD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(DYLD_LIBRARY_PATH)" $(DESTDIR)$(BINDIR)/chibi-scheme$(EXE) -mchibi.snow.commands -mchibi.snow.interface -mchibi.snow.package -mchibi.snow.utils -d $(DESTDIR)$(MODDIR)/snow.img -cd / && LD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(LD_LIBRARY_PATH)" DYLD_LIBRARY_PATH="$(DESTDIR)$(SOLIBDIR):$(DYLD_LIBRARY_PATH)" $(DESTDIR)$(BINDIR)/chibi-scheme$(EXE) -mchibi.snow.commands -mchibi.snow.interface -mchibi.snow.package -mchibi.snow.utils -d $(DESTDIR)$(MODDIR)/snow.img
endif endif

4
lib/scheme/box.sld Normal file
View file

@ -0,0 +1,4 @@
(define-library (scheme box)
(import (srfi 111))
(export box box? unbox set-box!))

37
lib/scheme/charset.sld Normal file
View file

@ -0,0 +1,37 @@
(define-library (scheme charset)
(import (srfi 14))
(export
char-set? char-set= char-set<=
char-set-hash
char-set-cursor char-set-ref char-set-cursor-next end-of-char-set?
char-set-fold char-set-unfold char-set-unfold!
char-set-for-each char-set-map
char-set-copy char-set
list->char-set string->char-set
list->char-set! string->char-set!
char-set-filter ucs-range->char-set ->char-set
char-set-filter! ucs-range->char-set!
char-set->list char-set->string
char-set-size char-set-count char-set-contains?
char-set-every char-set-any
char-set-adjoin char-set-delete
char-set-adjoin! char-set-delete!
char-set-complement char-set-union char-set-intersection
char-set-complement! char-set-union! char-set-intersection!
char-set-difference char-set-xor char-set-diff+intersection
char-set-difference! char-set-xor! char-set-diff+intersection!
char-set:lower-case char-set:upper-case char-set:title-case
char-set:letter char-set:digit char-set:letter+digit
char-set:graphic char-set:printing char-set:whitespace
char-set:iso-control char-set:punctuation char-set:symbol
char-set:hex-digit char-set:blank char-set:ascii
char-set:empty char-set:full))

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

@ -0,0 +1,25 @@
(define-library (scheme comparator)
(import (srfi 128))
(export
;; Predicates:
comparator? comparator-ordered? comparator-hashable?
;; Constructors:
make-comparator make-pair-comparator make-list-comparator
make-vector-comparator make-eq-comparator make-eqv-comparator
make-equal-comparator
;; Standard hash functions:
boolean-hash char-hash char-ci-hash string-hash string-ci-hash
symbol-hash number-hash
;; Bounds and salt:
hash-bound hash-salt
;; Default comparators:
make-default-comparator default-hash comparator-register-default!
;; Accessors and invokers:
comparator-type-test-predicate comparator-equality-predicate
comparator-ordering-predicate comparator-hash-function
comparator-test-type comparator-check-type comparator-hash
;; Comparison predicates:
=? <? >? <=? >=?
;;Syntax:
comparator-if<=>))

5
lib/scheme/ephemeron.sld Normal file
View file

@ -0,0 +1,5 @@
(define-library (scheme ephemeron)
(import (srfi 124))
(export make-ephemeron ephemeron? ephemeron-broken?
ephemeron-key ephemeron-datum))

39
lib/scheme/generator.sld Normal file
View file

@ -0,0 +1,39 @@
(define-library (scheme generator)
(import (srfi 121))
(export generator
make-iota-generator
make-range-generator
make-coroutine-generator
list->generator
vector->generator
reverse-vector->generator
string->generator
bytevector->generator
make-for-each-generator
make-unfold-generator
gcons*
gappend
gcombine
gfilter
gremove
gtake
gdrop
gtake-while
gdrop-while
gdelete
gdelete-neighbor-dups
gindex
gselect
generator->list
generator->reverse-list
generator->vector
generator->vector!
generator->string
generator-fold
generator-for-each
generator-find
generator-count
generator-any
generator-every
generator-unfold))

29
lib/scheme/hash-table.sld Normal file
View file

@ -0,0 +1,29 @@
(define-library (scheme hash-table)
(import (srfi 125))
(export
;; Constructors:
make-hash-table hash-table hash-table-unfold alist->hash-table
;; Predicates:
hash-table? hash-table-contains? hash-table-exists?
hash-table-empty? hash-table=? hash-table-mutable?
;; Accessors:
hash-table-ref hash-table-ref/default
;; Mutators:
hash-table-set! hash-table-delete! hash-table-intern!
hash-table-update! hash-table-update!/default hash-table-pop!
hash-table-clear!
;; The whole hash table:
hash-table-size hash-table-keys hash-table-values
hash-table-entries hash-table-find hash-table-count
;; Mapping and folding:
hash-table-map hash-table-for-each hash-table-walk
hash-table-map! hash-table-map->list hash-table-fold hash-table-prune!
;; Copying and conversion:
hash-table-copy hash-table-empty-copy hash-table->alist
;; Hash tables as sets:
hash-table-union! hash-table-merge!
hash-table-intersection! hash-table-difference! hash-table-xor!
;; Hash functions and reflectivity:
hash string-hash string-ci-hash hash-by-identity
hash-table-equivalence-function hash-table-hash-function))

79
lib/scheme/ilist.sld Normal file
View file

@ -0,0 +1,79 @@
(define-library (scheme ilist)
(import (srfi 116))
(export
;; Syntax
iq
;; Constructors
ipair ilist
xipair ipair* make-ilist ilist-tabulate
ilist-copy iiota
;; Predicates
ipair? proper-ilist? ilist? dotted-ilist?
not-ipair? null-ilist?
ilist=
;; Selectors
icar icdr icaar icadr icdar icddr
icaaaar icaaadr icaadar icaaddr
icadaar icadadr icaddar icadddr
icdaaar icdaadr icdadar icdaddr
icddaar icddadr icdddar icddddr
icaaar icaadr icadar icaddr
icdaar icdadr icddar icdddr
ilist-ref
ifirst isecond ithird ifourth ififth isixth iseventh ieighth ininth itenth
icar+icdr
itake idrop ilist-tail
itake-right idrop-right
isplit-at
ilast last-ipair
;; Miscellaneous: length, append, concatenate, reverse, zip & count
ilength
iappend iconcatenate ireverse iappend-reverse
izip iunzip1 iunzip2 iunzip3 iunzip4 iunzip5
icount
;; Fold, unfold & map
imap ifor-each
ifold iunfold ipair-fold ireduce
ifold-right iunfold-right ipair-fold-right ireduce-right
iappend-map ipair-for-each ifilter-map imap-in-order
;; Filtering & partitioning
ifilter ipartition iremove
;; Searching
imember imemq imemv
ifind ifind-tail
iany ievery
ilist-index
itake-while idrop-while
ispan ibreak
;; Deleting
idelete idelete-duplicates
;; Immutable association lists
iassoc iassq iassv
ialist-cons ialist-delete
;; Replacement
replace-icar replace-icdr
;; Conversion
pair->ipair ipair->pair
list->ilist ilist->list
tree->itree itree->tree
gtree->itree gtree->tree
;; Procedure application
iapply
;; Comparators
ipair-comparator ilist-comparator
make-ilist-comparator make-improper-ilist-comparator
make-icar-comparator make-icdr-comparator))

11
lib/scheme/list-queue.sld Normal file
View file

@ -0,0 +1,11 @@
(define-library (scheme list-queue)
(import (srfi 117))
(export
make-list-queue list-queue list-queue-copy list-queue-unfold
list-queue-unfold-right list-queue? list-queue-empty?
list-queue-front list-queue-back list-queue-list list-queue-first-last
list-queue-add-front! list-queue-add-back! list-queue-remove-front!
list-queue-remove-back! list-queue-remove-all! list-queue-set-list!
list-queue-append list-queue-append! list-queue-concatenate
list-queue-map list-queue-map! list-queue-for-each))

21
lib/scheme/list.sld Normal file
View file

@ -0,0 +1,21 @@
(define-library (scheme list)
(import (srfi 1))
(export
xcons cons* make-list list-tabulate list-copy circular-list iota
proper-list? circular-list? dotted-list? not-pair? null-list? list=
first second third fourth fifth sixth seventh eighth ninth tenth
car+cdr take drop take-right drop-right take! drop-right! split-at split-at!
last last-pair length+ concatenate append! concatenate! reverse!
append-reverse append-reverse!
zip unzip1 unzip2 unzip3 unzip4 unzip5 count
fold unfold pair-fold reduce fold-right unfold-right
pair-fold-right reduce-right
append-map append-map! map! pair-for-each filter-map map-in-order
filter partition remove filter! partition! remove! find find-tail any every
list-index take-while drop-while take-while! span break span! break!
delete delete-duplicates delete! delete-duplicates!
alist-cons alist-copy alist-delete alist-delete!
lset<= lset= lset-adjoin lset-union lset-union! lset-intersection
lset-intersection! lset-difference lset-difference! lset-xor lset-xor!
lset-diff+intersection lset-diff+intersection!))

422
lib/scheme/red.sld Normal file
View file

@ -0,0 +1,422 @@
(define-library (scheme red)
(import
(scheme base)
(scheme box)
(scheme case-lambda)
(scheme char)
(scheme charset)
(scheme comparator)
(scheme complex)
(scheme cxr)
(scheme ephemeron)
(scheme eval)
(scheme file)
(scheme generator)
(scheme hash-table)
(scheme ilist)
(scheme inexact)
(scheme lazy)
(scheme list-queue)
(scheme list)
(scheme load)
(scheme process-context)
(scheme read)
(scheme repl)
(scheme sort)
(scheme time)
(scheme vector)
(scheme write))
(export
* +
- ->char-set
... /
< <=
<=? <?
= =>
=? >
>= >=?
>? _
abs acos
alist->hash-table
alist-cons alist-copy
alist-delete alist-delete!
and angle
any append
append!
append-map append-map!
append-reverse append-reverse!
apply
asin
assoc assq
assv atan
begin
binary-port?
boolean-hash boolean=?
boolean? box
box? break
break! bytevector
bytevector->generator bytevector-append
bytevector-copy bytevector-copy!
bytevector-length bytevector-u8-ref
bytevector-u8-set! bytevector?
caaaar caaadr
caaar caadar
caaddr caadr
caar cadaar
cadadr cadar
caddar cadddr
caddr cadr
call-with-current-continuation call-with-input-file
call-with-output-file
call-with-port
call-with-values call/cc
car car+cdr
case case-lambda
cdaaar cdaadr
cdaar cdadar
cdaddr cdadr
cdar cddaar
cddadr cddar
cdddar cddddr
cdddr cddr
cdr ceiling
char->integer char-alphabetic?
char-ci-hash char-ci<=?
char-ci<? char-ci=?
char-ci>=? char-ci>?
char-downcase char-foldcase
char-hash char-lower-case?
char-numeric? char-ready?
char-set char-set->list
char-set->string char-set-adjoin
char-set-adjoin! 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
comparator-equality-predicate comparator-hash
comparator-hash-function comparator-hashable?
comparator-if<=> comparator-ordered?
comparator-ordering-predicate comparator-register-default!
comparator-test-type comparator-type-test-predicate
comparator?
complex? concatenate
concatenate! cond
cond-expand cons
cons*
cos
count
current-error-port
current-input-port current-jiffy
current-output-port
current-second default-hash
define
define-record-type define-syntax
define-values delay
delay-force delete
delete! delete-duplicates
delete-duplicates! delete-file
denominator
digit-value display
do dotted-list?
drop drop-right
drop-right! drop-while
dynamic-wind eighth
else emergency-exit
end-of-char-set?
environment
eof-object eof-object?
ephemeron-broken? ephemeron-key
ephemeron-datum ephemeron?
eq? equal?
eqv?
error eval
even? every
exact
exact-integer-sqrt
exact-integer?
exact?
exit exp
expt features
fifth file-error?
file-exists?
filter filter!
filter-map find
find-tail
finite? first
floor floor-quotient
floor-remainder floor/
flush-output-port
fold fold-right
for-each force
fourth gappend
gcd
gcombine gcons*
gdelete gdelete-neighbor-dups
gdrop gdrop-while
generator
generator->list generator->reverse-list
generator->string generator->vector
generator->vector! generator-any
generator-count generator-every
generator-find generator-fold
generator-for-each generator-unfold
get-environment-variable get-environment-variables
get-output-bytevector get-output-string
gfilter gindex
gremove gselect
gtake gtake-while
gtree->itree gtree->tree
guard hash
hash-bound hash-by-identity
hash-salt hash-table
hash-table->alist hash-table-clear!
hash-table-contains? hash-table-copy
hash-table-count hash-table-delete!
hash-table-difference! hash-table-empty-copy
hash-table-empty? hash-table-entries
hash-table-equivalence-function hash-table-exists?
hash-table-find hash-table-fold
hash-table-for-each hash-table-hash-function
hash-table-intern! hash-table-intersection!
hash-table-keys hash-table-map
hash-table-map! hash-table-map->list
hash-table-merge! hash-table-mutable?
hash-table-pop! hash-table-prune!
hash-table-ref hash-table-ref/default
hash-table-set! hash-table-size
hash-table-unfold hash-table-union!
hash-table-update! hash-table-update!/default
hash-table-values hash-table-walk
hash-table-xor! hash-table=?
hash-table?
if ilist->list
ilist-comparator ilist-tail
imag-part
include include-ci
inexact
inexact? infinite?
input-port-open? input-port?
integer->char integer?
interaction-environment iota
ipair->pair ipair-comparator
iq
itree->tree
jiffies-per-second lambda
last last-pair
lcm
length
length+ let
let* let*-values
let-syntax
let-values letrec
letrec* letrec-syntax
list list->char-set
list->char-set! list->generator
list->ilist list->string
list->vector list-copy
list-delete-neighbor-dups list-delete-neighbor-dups!
list-index list-merge
list-merge! list-queue
list-queue-add-back! list-queue-add-front!
list-queue-append list-queue-append!
list-queue-back list-queue-concatenate
list-queue-copy list-queue-empty?
list-queue-first-last list-queue-for-each
list-queue-front list-queue-list
list-queue-map list-queue-map!
list-queue-remove-all! list-queue-remove-back!
list-queue-remove-front! list-queue-set-list!
list-queue-unfold list-queue-unfold-right
list-queue? list-ref
list-set! list-sort
list-sort! list-sorted?
list-stable-sort list-stable-sort!
list-tabulate list-tail
list= list?
load
log
lset-adjoin
lset-diff+intersection lset-diff+intersection!
lset-difference lset-difference!
lset-intersection lset-intersection!
lset-union lset-union!
lset-xor lset-xor!
lset<= lset=
magnitude make-bytevector
make-comparator
make-coroutine-generator make-default-comparator
make-ephemeron
make-eq-comparator make-equal-comparator
make-eqv-comparator
make-for-each-generator
make-hash-table make-icar-comparator
make-icdr-comparator make-improper-ilist-comparator
make-iota-generator make-list
make-list-comparator make-list-queue
make-pair-comparator make-parameter
make-polar make-promise
make-range-generator make-rectangular
make-string
make-unfold-generator make-vector
make-vector-comparator map
map! map-in-order
max member
memq memv
min modulo
nan? negative?
newline ninth
not not-ipair?
not-pair?
null-list? null?
number->string number-hash
number? numerator
odd?
open-binary-input-file open-binary-output-file
open-input-bytevector open-input-file
open-input-string
open-output-bytevector open-output-file
open-output-string
or output-port-open?
output-port? pair->ipair
pair-fold pair-fold-right
pair-for-each
pair?
parameterize partition
partition! peek-char
peek-u8
port? positive?
procedure?
promise? proper-list?
quasiquote quote
quotient raise
raise-continuable
rational? rationalize
read read-bytevector
read-bytevector! read-char
read-error? read-line
read-string read-u8
real-part
real? reduce
reduce-right
remainder
remove remove!
replace-icar replace-icdr
reverse reverse!
reverse-list->vector reverse-vector->generator
reverse-vector->list
round
second set!
set-box! set-car!
set-cdr!
seventh sin
sixth
span
span! split-at
split-at! sqrt
square string
string->char-set string->char-set!
string->generator string->list
string->number string->symbol
string->utf8 string->vector
string-append string-ci-hash
string-ci<=? string-ci<?
string-ci=? string-ci>=?
string-ci>?
string-copy string-copy!
string-downcase string-fill!
string-foldcase string-for-each
string-hash
string-length string-map
string-ref string-set!
string-upcase
string<=? string<?
string=? string>=?
string>? string?
substring
symbol->string symbol-hash
symbol=? symbol?
syntax-error
syntax-rules
take
take! take-right
take-while take-while!
tan tenth
textual-port? third
tree->itree
truncate truncate-quotient
truncate-remainder truncate/
u8-ready?
ucs-range->char-set ucs-range->char-set!
unbox unfold
unfold-right unless
unquote unquote-splicing
unzip1 unzip2
unzip3 unzip4
unzip5 utf8->string
values vector
vector->generator vector->list
vector->string vector-any
vector-append vector-append-subvectors
vector-binary-search vector-concatenate
vector-copy vector-copy!
vector-count vector-cumulate
vector-delete-neighbor-dups vector-delete-neighbor-dups!
vector-empty? vector-every
vector-fill! vector-find-median
vector-find-median! vector-fold
vector-fold-right vector-for-each
vector-index vector-index-right
vector-length vector-map
vector-map! vector-merge
vector-merge! vector-partition
vector-ref vector-reverse!
vector-reverse-copy vector-reverse-copy!
vector-select! vector-separate!
vector-set! vector-skip
vector-skip-right vector-sort
vector-sort! vector-sorted?
vector-stable-sort vector-stable-sort!
vector-swap! vector-unfold
vector-unfold! vector-unfold-right
vector-unfold-right! vector=
vector?
when with-exception-handler
with-input-from-file
with-output-to-file write
write-bytevector write-char
write-string write-u8
xcons
zero?
zip
))

19
lib/scheme/sort.sld Normal file
View file

@ -0,0 +1,19 @@
(define-library (scheme sort)
(import (srfi 132))
(export
list-sorted? vector-sorted?
list-sort list-stable-sort
list-sort! list-stable-sort!
vector-sort vector-stable-sort
vector-sort! vector-stable-sort!
list-merge list-merge!
vector-merge vector-merge!
list-delete-neighbor-dups
list-delete-neighbor-dups!
vector-delete-neighbor-dups
vector-delete-neighbor-dups!
vector-find-median
vector-find-median!
vector-select!
vector-separate!))

36
lib/scheme/vector.sld Normal file
View file

@ -0,0 +1,36 @@
(define-library (scheme vector)
(import (srfi 133))
(export
;; Constructors
make-vector vector
vector-unfold vector-unfold-right
vector-copy vector-reverse-copy
vector-append vector-concatenate vector-append-subvectors
;; Predicates
vector?
vector-empty?
vector=
;; Selectors
vector-ref
vector-length
;; Iteration
vector-fold vector-fold-right
vector-map vector-map!
vector-for-each vector-count
vector-cumulate
;; Searching
vector-index vector-index-right
vector-skip vector-skip-right
vector-binary-search
vector-any vector-every
vector-partition
;; Mutators
vector-set! vector-swap!
vector-fill! vector-reverse!
vector-copy! vector-reverse-copy!
vector-unfold! vector-unfold-right!
;; Conversion
vector->list reverse-vector->list
list->vector reverse-list->vector
vector->string string->vector))