[Haskell-cafe] Announce: SCC, Streaming Component Combinator library

Mario Blazevic mblazevic at stilo.com
Fri May 9 10:59:17 EDT 2008


I'm pleased to announce the 0.1 release of Streaming Component
Combinators in Haskell, based on my earlier work done in OmniMark and
published in paper

Mario Blažević, Streaming component combinators, Extreme Markup
Languages, 2006.
http://www.idealliance.org/papers/extreme/proceedings/html/2006/Blazevic01/EML2006Blazevic01.html

The release consists of the following:

- Yet another monad transformer with coroutine functionality. Its
central feature is the function

pipe :: forall context x m r1 r2. Monad m =>
        Producer m x r1 -> Consumer m x r2 -> Pipe context m (r1, r2)

- Based on the above, streaming component types Transducer and Splitter
are defined, as well as a number of primitive component instances.

- Next are component combinators that can be used to synthesize larger
components.

- Finally, there is a rudimentary executable, shsh (Streaming Haskell 
SHell), that exposes most of the above within a command-line shell. It's 
useful for experiments and testing of new components.

Here are a few simple command examples:

wc -c
   count | show | concatenate

wc -l
   foreach line then substitute x else suppress end | count | show | 
concatenate

grep "foo"
   foreach line having substring "foo" then append "\n" else suppress end

sed "s:foo:bar:"
   foreach substring "foo" then substitute "bar" end

sed "s:foo:[\\&]:"
   foreach substring "foo" then prepend "[" | append "]" end


The SCC library and shell are available on Hackage, at

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/scc-0.1


More information about the Haskell-Cafe mailing list