
On Fri, Jul 10, 2009 at 4:39 PM, Chris Lesniewski-Laas
Hi. I've been experimenting with using Reactive as the basis of a network daemon I'm working on, with the top-level type Event Packet -> Event Packet.
I've run into a difficult-to-debug strictness problem with the Monad instance for EventG, at least when used together with makeEvent. Here's a minimal test program that shows the problem:
I can't comment on this exact bug, but in general the Monad instance for Event is semantically broken. There's a perfectly reasonable joinE function, yes, but as I understand it combining it with the perfectly reasonable Applicative instance produces an illegal monad. Thus, in general, you should avoid the Monad instance and use joinE directly when required. -- Svein Ove Aas