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

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/E... 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
participants (1)
-
Mario Blazevic