On Sun, 10 Jul 2011, Felipe Almeida Lessa wrote:

On Sat, Jul 9, 2011 at 7:58 AM, Henning Thielemann
<lemm...@henning-thielemann.de> wrote:
My stream processors are not Arrows, because 'first' cannot be implemented.
However, 'arr' and '.' can be implemented.
...
Since I have no Arrow instance I even have to write my own combinators that
are counterparts to (&&&) and friends.

If you have arr, (.) and (&&&), then you have first as well:

 f **** g = (arr fst >>> f) &&& (arr snd >>> g)

 first' f = f **** arr id

Am I missing something here? =)

I have only something like (&&&), but not precisely (&&&).

I have for instance

parallel :: (Monoid b) => T a b -> T a b -> T a b

The arrow (T a b) emits a value of type 'b' for every incoming event of type 'a', but may also emit a 'b' without any input trigger. Monoid.mappend is used to merge the events if both input arrows generate an output at the same time.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to