id,type,time,changetime,component,severity,priority,owner,reporter,cc,version,milestone,status,resolution,summary,description,keywords
442,enhancement,04:06:53Z+0000,2010-01-28T04:06:53Z+0000,Primitives,None,major,,blamario,,0.4,0.5,new,None,Add more primitive producers,"Add more non-IO primitive producers, such as:
* infinite repeating producer,
* natural number producer,
* random number producer.
",
443,enhancement,04:15:00Z+0000,2010-01-28T04:15:00Z+0000,Combinators,None,major,,blamario,,0.4,0.5,new,None,Add zipping and merging components,"A zip component would be similar to zip and zipWith functions on lists, except it would be working on two sources and sending results into a sink. It would have to stop when either of the sources is exhausted.
A merge component would also take two sources and one sink, but they'd all need to have the same type and it would run as long as either source provides more input.
It's not too clear what combinators could apply to these component types.
",
444,defect,16:31:13Z+0000,2010-02-15T16:31:13Z+0000,Combinators,None,major,,blamario,,0.4,,new,None,The followedBy combinator needs to know about region ends,"Tests occasionally fail because substring is not capable of telling followedBy where the end of the first of two overlapping strings is.
*Main> splitterOutputs (substring [Three,Three] `followedBy` substring [Three]) [Three,Three,Three]
([Three,Three],[Three])
",
446,defect,03:07:57Z+0000,2010-03-22T03:24:21Z+0000,Monad.Coroutine,None,minor,,blamario,,0.5,,new,None,The merge function does not seem to run its argument coroutines in parallel,"Function
{{{
Control.Monad.Coroutine.merge :: forall s m x. (Monad m, Functor s) =>
(forall x. [m x] -> m [x]) -> (forall x. [s x] -> s [x])
-> [Coroutine s m x] -> Coroutine s m [x]
}}}
appears to work properly, except that its test in the TestCoroutine module apparently always uses only one CPU core.
",
447,enhancement,03:42:47Z+0100,2010-04-22T03:42:47Z+0100,Primitives,None,major,,blamario,,0.5,,new,None,Add block-level IO,"The fromHandle producer and toHandle consumer should be reading and writing whole blocks instead of individual characters. The easiest way to integrate them with the other components would be through combinators that convert block components to single-character components.
",
448,enhancement,04:18:49Z+0100,2010-04-22T04:18:49Z+0100,Shell,None,major,,blamario,,0.5,,new,None,Try the finally tagless approach for shell,"The shell type system should be embeddable using the [http://www.cs.rutgers.edu/~ccshan/tagless/jfp.pdf finally tagless] approach.
Also see http://lambda-the-ultimate.org/node/2438
",
449,task,04:03:07Z+0100,2010-09-12T04:03:07Z+0100,Streams,None,major,,blamario,,0.5,,new,None,Try inverting the producer/consumer arguments to seesawNested in pipeG,"The tests begin to fail. This is disturbing and should be investigated.
",
450,task,20:07:41Z+0100,2010-09-25T20:07:41Z+0100,Combinators,None,minor,,blamario,,,,new,None,The substring and parseSubstring primitives could be made more bulky,"The substring and parseSubstring primitives use the bulk operations pourUntil and getPrefixOf only for the top-level string. Then they switch to the old algorithm that checks for overlaps. This is a kludge, it must be possible to generalize the test definition.
",
451,enhancement,03:16:52Z+0000,2010-11-12T03:16:52Z+0000,Combinators,None,major,,blamario,,0.6,,new,None,"Add pattern-matching component type, its primitives and combinators","Splitters are not really the best choice for pattern-matching components. There should be a different component type for that purpose. It would still take one source and two sinks of the same type - one for the matching part of the input and the other for the consumed, but unmatched part - but it would not consume any input beyond what it needs to establish the match portion.
",
452,enhancement,03:22:50Z+0000,2010-11-12T03:22:50Z+0000,Combinators,None,minor,,blamario,,,,new,None,Add support for time-tagged items,"Streams allow more things to be done when each of them items carries a time stamp. A transducer of such streams can be made an arrow, for example.
",
453,task,03:28:55Z+0000,2010-11-16T03:28:55Z+0000,Monad.Coroutine,None,major,,blamario,,0.6,,new,None,Add QuickCheck testsuite for monad-coroutine,"The current test for monad-coroutine are not very thorough, and they are mostly good only for performance testing. A !QuickCheck test suite is needed.
",
454,defect,03:35:11Z+0000,2010-11-16T03:35:11Z+0000,Monad.Parallel,None,major,,blamario,,0.6,,new,None,Use Criterion for benchmarking,"Add a Criterion benchmark suite for evaluating the speed of monad-parallel, monad-coroutine and SCC. The former two should be easy, because the existing tests are pretty much already used for benchmarking.
",
445,defect,16:31:14Z+0000,2010-03-18T22:46:24Z+0000,Combinators,None,major,,blamario,,0.4,,closed,duplicate,The followedBy combinator needs to know about region ends,"Tests occasionally fail because substring is not capable of telling followedBy where the end of the first of two overlapping strings is.
*Main> splitterOutputs (substring [Three,Three] `followedBy` substring [Three]) [Three,Three,Three]
([Three,Three],[Three])
",
455,enhancement,04:47:39Z+0000,2010-12-15T04:31:11Z+0000,Monad.Coroutine,None,major,None,blamario,,0.6,0.7,closed,fixed,Add a Functor instance for Coroutine s m,"
",
456,enhancement,04:52:58Z+0000,2010-12-15T03:45:44Z+0000,Monad.Parallel,None,major,,blamario,,0.5,0.7,closed,fixed,Add MonadParallel instances for other base library monads,"ReadP and !ReadPrec should be parallelizable, as well as ((->) r) and Either e.
",