Haskell: downpair :: (Monad m) => m (a, b) -> (m a, m b) implementation I'm trying to implement function downpairs which takes monad of pairs and transform it into pair of monad

My current implementation is 

import Control.Monad
import Control.Arrow
import Data.Maybe

downpair :: (Monad m) =&gt; m (a, b) -&gt; (m a, m b)
downpair = ((return . fst =&lt;&lt;) &amp;&amp;&amp; (return . snd =&lt;&lt;)) 

main = do
    print $ downpair $ Just ("Hello", "World")


Is there way to implement downpair in more compact maner?

PS Sorry for my poor English
(return . fst =&lt;&lt;) can be replaced by fmap fst. Your definition then becomes

downpair = fmap fst &amp;&amp;&amp; fmap snd