GNU ELPA - stream


Implementation of streams
stream-2.2.5.tar, 2020-Feb-08, 50.0 KiB
Home page
Browse repository
CGit or Gitweb

To install this package, run in Emacs:

M-x package-install RET stream RET

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.4.tar2017-Apr-2350.0 KiB
stream-2.2.3.el2016-Sep-2419.4 KiB
stream-2.2.2.el2016-Sep-1719.4 KiB
stream-2.2.1.el2016-Aug-0217.6 KiB
stream-2.2.0.el2016-Mar-0415.2 KiB
stream-2.1.0.el2015-Nov-1210.5 KiB
stream-2.0.5.el2015-Nov-0510.2 KiB
stream-2.0.2.el2015-Oct-319.53 KiB
stream-2.0.1.el2015-Oct-279.43 KiB
stream-1.0.1.el2015-Oct-269.23 KiB
stream-1.0.el2015-Oct-159.02 KiB