On Wed, 2012-12-12 at 18:41 -0800, Frank Siebenlist wrote:
> Could you give a few use cases that shows what your library can be used
> for?

Sure; it is, after all, a little abstract.

The library helps you separate I/O from pure, composable functions,
while retaining performance.  It does for input streams what chunked
seqs do for lazy seqs.

Say you have a text file f, let r = (reader f).

Let bs = (read-block-seq r).  bs is a lazy seq of Java char arrays, a
"block seq", each read from the stream as requested.

Let s = (block-seq->seq bs).  s is a seq of Java chars, still lazy,
efficiently represented by the input arrays in a chunked seq.

Let lstr = (->char-array-seq-sequence bs). lstr is a Java CharSequence
(the base interface of strings), still lazily backed by the same
underlying seq of char arrays, complete with structural sharing on
subSequence.

Now you can write pure functions on these structures at whatever level
is convenient for you, and as long as you do not close the stream before
you finish processing the input, it'll work out.

> Is it only for those of us that require a stream/seq of single
> bytes/chars?

I believe that criteria covers everyone :)

> Would that make it easier to generate sha1's for example?
> Is it useful for sound/video-like streams?

In both cases, I imagine so.

-- 
Stephen Compall
"^aCollection allSatisfy: [:each | aCondition]": less is better than


-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to