GNU ELPA - stream


Implementation of streams
stream-2.3.0.tar (.sig), 2024-Mar-31, 50.0 KiB
Atom feed
Browse repository
CGit or Gitweb

To install this package from Emacs, use package-install or list-packages.

Full description

This library provides an implementation of streams. Streams are
implemented as delayed evaluation of cons cells.

Functions defined in `seq.el' can also take a stream as input.

streams could be created from any sequential input data:
- sequences, making operation on them lazy
- a set of 2 forms (first and rest), making it easy to represent infinite sequences
- buffers (by character)
- buffers (by line)
- buffers (by page)
- IO streams
- orgmode table cells
- ...

All functions are prefixed with "stream-".
All functions are tested in tests/stream-tests.el

Here is an example implementation of the Fibonacci numbers
implemented as in infinite stream:

(defun fib (a b)
 (stream-cons a (fib b (+ a b))))
(fib 0 1)

A note for developers: Please make sure to implement functions that
process streams (build new streams out of given streams) in a way
that no new elements in any argument stream are generated.  This is
most likely an error since it changes the argument stream.  For
example, a common error is to call `stream-empty-p' on an input
stream and build the stream to return depending on the result.
Instead, delay such tests until elements are requested from the
resulting stream.  A way to achieve this is to wrap such tests into
`stream-make' or `stream-delay'.  See the implementations of
`stream-append' or `seq-drop-while' for example.

Old versions

stream-2.2.5.tar.lz2020-Feb-089.75 KiB
stream-2.2.4.tar.lz2017-Apr-238.71 KiB
stream-2.2.3.el.lz2016-Sep-245.51 KiB
stream-2.2.2.el.lz2016-Sep-175.50 KiB
stream-2.2.1.el.lz2016-Aug-024.92 KiB
stream-2.2.0.el.lz2016-Mar-044.27 KiB
stream-2.1.0.el.lz2015-Nov-122.99 KiB
stream-2.0.5.el.lz2015-Nov-052.90 KiB
stream-2.0.2.el.lz2015-Oct-312.77 KiB
stream-2.0.1.el.lz2015-Oct-272.77 KiB
stream-1.0.1.el.lz2015-Oct-262.82 KiB
stream-1.0.el.lz2015-Oct-152.79 KiB