Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Mario Blazevic <mblazevic <at> stilo.com>
Subject: Announce: SCC, Streaming Component Combinator library
Newsgroups: gmane.comp.lang.haskell.cafe
Date: Friday 9th May 2008 14:59:17 UTC (over 9 years ago)
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
 
CD: 3ms