This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki LazySequencesCowan version 1

author

cowan

comment


    

ipnr

127.11.51.1

name

LazySequencesCowan

readonly

0

text

== Lazy sequences ==

Preliminary list of procedures for lazy sequences.  Lazy sequences are based on GeneratorsGauche, so there are only a few constructors.

{{{
Constructors

list->lseq            list->vector          list->string          list->generator
lseq                  lseq*                 lseq-unfold           lseq-unfold-right

Predicates

lseq?                 null-lseq?            lseq=?

Selectors

lseq-first ... tenth  lseq-rest             lseq-last
lseq-ref
lseq-drop             lseq-drop-right       lseq-take             lseq-take-right
lseq-split-at

The whole lazy sequence

lseq-length           lseq-reverse
lseq-append           lseq-concatenate
lseq-zip              lseq-unzip            lseq-unzip2           lseq-unzip3
lseq-unzip4           lseq-unzip5
lseq-count

Mapping and folding

lseq-map              lseq-for-each         lseq-for-each-subseq  lseq-filter-map
lseq-fold             lseq-fold-right       lseq-fold-subseq      lseq-fold-subseq-right
lseq-reduce           lseq-reduce-right

Filtering

lseq-filter           lseq-remove           lseq-partition

Searching

lseq-find             lseq-find-rest        lseq-drop-while       lseq-take-while
lseq-any              lseq-every
lseq-index 
lseq-member           lseq-memq             lseq-memv

Deleting

lseq-delete           lseq-delete-neighbor-dups

Lazy alists

lseq-assoc            lseq-assq             lseq-assv
lseq-alist-cons       lseq-alist-delete

Conversion

lseq->list            lseq->vector          lseq->string          lseq->generator

Realization

lseq-realize!         lseq-realize-once!    lseq-realize-steps!   lseq-realize-while!      
}}}

== Implementation notes ==

An lseq is a QueuesCowan queue plus a generator.  Queues can be shared between lseqs, which means that you are not allowed to remove anything from them, and the only addition operation is `lseq-realize-once!`, which realizes one value and adds it to the back of the queue.

time

2014-11-05 00:34:49

version

1