
#10457: Revise/remove custom mapM implementation for lists -------------------------------------+------------------------------------- Reporter: dolio | Owner: Type: task | Status: new Priority: normal | Milestone: 7.10.2 Component: libraries/base | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: Phab:D924 -------------------------------------+------------------------------------- Comment (by simonmar): @simonpj You could in principle write an `Applicative` or `Monad` instance that would distinguish between `mapM` and `traverse`, although it wouldn't be a good idea. But strictly speaking this is therefore a semantic change. In my case it makes a (huge) difference to performance, because `traverse` is parallel for the Haxl monad, where as `mapM` is serial. There's no difference in semantics, provided you don't dig into the monad implementation and only use the external interface, and provided some other conditions are met. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10457#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler