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