id	type	time	changetime	component	severity	priority	owner	reporter	cc	version	milestone	status	resolution	summary	description	keywords
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	"
"	
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.
"	
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.
"	
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.
"	
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.
"	
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.
"	
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.
"	
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])
"	
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])
"	
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.
"	
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.
"	
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.
"	
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

"	
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.
"	
