
On Fri, 15 Jun 2012 09:07:54 0100, Simon Marlow
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 greetings, Sjoerd

On 15/06/2012 10:39, Sjoerd Visscher wrote:
On Fri, 15 Jun 2012 09:07:54 0100, Simon Marlow
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

Cool, thanks! Did you check the implementation of "empty"? I didn't really think that one through, it was just the first thing I tried and it seemed to work. I would not be surprised if there's a better way to wait forever. On Jul 3, 2012, at 3:33 PM, Simon Marlow wrote:
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
-- Sjoerd Visscher https://github.com/sjoerdvisscher/blog
participants (2)
-
Simon Marlow
-
Sjoerd Visscher