From eb38a5836a5b97e133bb7e264d5f29cc2998d870 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Wed, 24 Jan 2018 23:54:09 +0900 Subject: [PATCH] extending (scheme red) --- lib/scheme/ideque.sld | 31 ++ lib/scheme/lseq.sld | 25 ++ lib/scheme/red.sld | 960 +++++++++++++++++++++++++----------------- lib/scheme/rlist.sld | 53 +++ lib/scheme/set.sld | 60 +++ lib/scheme/stream.sld | 12 + lib/scheme/text.sld | 59 +++ 7 files changed, 809 insertions(+), 391 deletions(-) create mode 100644 lib/scheme/ideque.sld create mode 100644 lib/scheme/lseq.sld create mode 100644 lib/scheme/rlist.sld create mode 100644 lib/scheme/set.sld create mode 100644 lib/scheme/stream.sld create mode 100644 lib/scheme/text.sld diff --git a/lib/scheme/ideque.sld b/lib/scheme/ideque.sld new file mode 100644 index 00000000..b164c1cf --- /dev/null +++ b/lib/scheme/ideque.sld @@ -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 + )) diff --git a/lib/scheme/lseq.sld b/lib/scheme/lseq.sld new file mode 100644 index 00000000..dd3e5641 --- /dev/null +++ b/lib/scheme/lseq.sld @@ -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)) diff --git a/lib/scheme/red.sld b/lib/scheme/red.sld index dc32b030..25a9e5b3 100644 --- a/lib/scheme/red.sld +++ b/lib/scheme/red.sld @@ -14,409 +14,587 @@ (scheme file) (scheme generator) (scheme hash-table) + (scheme ideque) (scheme ilist) (scheme inexact) (scheme lazy) (scheme list-queue) (scheme list) (scheme load) + (scheme lseq) (scheme process-context) (scheme read) (scheme repl) + (scheme rlist) + (scheme set) (scheme sort) + (scheme stream) + (scheme text) (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-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? - 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-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? - 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 + * + + - ->char-set + ... / + < <= + <=? + =? > + >= >=? + >? _ + abs acos + alist->bag 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 bag + bag->alist bag->list + bag->set bag->set + bag-adjoin bag-adjoin! + bag-any? bag-comparator + bag-comparator bag-contains? + bag-copy bag-count + bag-decrement! bag-decrement! + bag-delete bag-delete! + bag-delete-all bag-delete-all! + bag-difference bag-difference! + bag-disjoint? bag-element-comparator + bag-element-count bag-element-count + bag-empty? bag-every? + bag-filter bag-filter! + bag-find bag-fold + bag-fold-unique bag-fold-unique + bag-for-each bag-for-each-unique + bag-for-each-unique bag-increment! + bag-increment! bag-intersection + bag-intersection! bag-map + bag-member bag-partition + bag-partition! bag-product + bag-product bag-product! + bag-product! bag-remove + bag-remove! bag-replace + bag-replace! bag-search! + bag-size bag-sum + bag-sum bag-sum! + bag-sum! bag-unfold + bag-union bag-union! + bag-unique-size bag-xor + bag-xor! bag<=? + bag=? bag>? + bag? 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-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? 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-stream 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-datum ephemeron-key + 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->ideque + generator->list generator->lseq + 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? + 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 + 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->bag list->bag! + list->char-set list->char-set! + list->generator list->ideque + list->ilist list->rlist + list->set list->set + list->set! list->set! + list->stream list->string + list->text 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 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-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-rlist make-string + make-text 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->stream port? + positive? procedure? + promise? proper-list? + quasiquote quote + quotient raise + raise-continuable rappend + rational? rationalize + rcaaaar rcaaadr + rcaaar rcaadar + rcaaddr rcaadr + rcaar rcadaar + 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 + reduce-right remainder + remove remove! + replace-icar replace-icdr + reverse reverse! + reverse-list->text reverse-list->vector + reverse-vector->generator reverse-vector->list + rfor-each rlength + rlist rlist->list + rlist-ref rlist-ref/update + 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? + seventh sin + sixth span + span! split-at + split-at! sqrt + 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->generator string->list + string->number string->symbol + string->text string->utf8 + string->vector string-append + string-ci-hash 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? + substring subtext + subtextual symbol->string + symbol-hash symbol=? + symbol? syntax-error + syntax-rules take + take! take-right + take-while take-while! + tan tenth + text text-length + 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-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? + 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 + utf16->text utf16be->text + utf16le->text utf8->string + utf8->text values + vector vector->generator + vector->list vector->string + vector->text 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 )) diff --git a/lib/scheme/rlist.sld b/lib/scheme/rlist.sld new file mode 100644 index 00000000..60107047 --- /dev/null +++ b/lib/scheme/rlist.sld @@ -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))) diff --git a/lib/scheme/set.sld b/lib/scheme/set.sld new file mode 100644 index 00000000..159b76f1 --- /dev/null +++ b/lib/scheme/set.sld @@ -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 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 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 + )) diff --git a/lib/scheme/stream.sld b/lib/scheme/stream.sld new file mode 100644 index 00000000..95531d80 --- /dev/null +++ b/lib/scheme/stream.sld @@ -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)) diff --git a/lib/scheme/text.sld b/lib/scheme/text.sld new file mode 100644 index 00000000..8d3a9f65 --- /dev/null +++ b/lib/scheme/text.sld @@ -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>=? + ;; 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 + ))