Proposal: Control.Concurrent.Async
Simon Marlow
marlowsd at gmail.com
Tue Jul 3 15:33:40 CEST 2012
On 15/06/2012 10:39, Sjoerd Visscher wrote:
> On Fri, 15 Jun 2012 09:07:54 0100, Simon Marlow <marlowsd at gmail.com> wrote:
> > I still need to ponder the Applicative version, I'm not familiar with
>> Control.Newtype. I would still like the Traversable abstraction I
>> mentioned in my last message.
>
> Control.Newtype is not important. I added it just to be able to write
>
> ala' Concurrently traverse getURL urls
>
> instead of
>
> runConcurrently $ traverse (Concurrently . getURL) urls
>
> But it is probably nicer to have
>
> doConcurrently :: Traversable t => (a -> IO b) -> t a -> IO (t b)
>
> then you could write
>
> doConcurrently getURL urls
>
> and your doConcurrently would just be "doConcurrently id".
> I updated the code at https://gist.github.com/2926572
Thanks, I've incorporated your Concurrently type, and renamed
doConcurrently to mapConcurrently (by analogy with mapM).
I released async-2.0.1.0 with the latest round of changes:
http://hackage.haskell.org/package/async
Changes in 2.0.1.0:
Added a Functor instance for Async
Added asyncBound, asyncOn, asyncWithUnmask, asyncOnWithUnmask,
withAsyncBound, withAsyncOn, withAsyncWithUnmask, withAsyncOnWithUnmask.
Added mapConcurrently
Added Concurrently (with Applicative and Alternative instances)
Cheers,
Simon
More information about the Libraries
mailing list