
On Thu, 2010-06-10 at 21:21 +0100, Ben Millwood wrote:
On Thu, Jun 10, 2010 at 8:57 PM, Maciej Piechotka
wrote: Error monad seems not to be a semantic solution as we exit on success not failure.
Which is really why the Either monad should not necessarily have Error associations :) If you forget about the fail method, the Monad (Either e) instance doesn't need the e to be an error type.
Alternatively, if even Error is more information than you need, you could use MaybeT:
http://hackage.haskell.org/package/MaybeT
which allows you to just stop. Given you're using it with IO it'd be easy to write a result to an IORef before terminating the computation, so it's of equivalent power, if slightly less convenient.
Over MaybeT I would prefer to simply iterate over list using helper recursive function. Either monad (without Error part) seems to be good solution - and it do not contain too much information. But the function with ContT IO seemed... nice. Also as it deals with network I/O speed does not seems to be a great issue. Regards