Short answer: no, there is no standard way. A slightly longer answer is that you can write a combinator >&>yourself:
(>&>) :: Monad m => (a -> m b) -> (a -> m c) -> a -> m c
(f >&> g) x = f x >> g x
This does exactly what you want to do, as you can see from the types. Using this, you have emptyDirectory >&> copyStubFileTo :: FilePath -> IO (), and therefore
mapM_ (emptyDirectory >&> copyStubFileTo) ["1", "2"]
Hoogle , , , .
>&>, (&) :: (a -> b) -> (a -> c) -> a -> (b,c), . , , , , , ( ), , , ( , ). , - , ; , , Hoogle. ( .)
, (&) :: (a -> b) -> (a -> c) -> a -> (b,c), , . b c, , . : (f & g) x = (f x, g x). pointfree, - :
(&) :: Monad m => m a -> m b -> m (a,b)
(&) = liftM2 (,)
, (r ->) - (-); (&) , (r ->) " -" .
, , emptyDirectory & copyStubFileTo :: FilePath -> (IO (), IO ()). OOG. , tupleM :: Monad m => (m a, m b) -> m (a,b). , & :
tupleM :: Monad m => (m a, m b) -> m (a,b)
tupleM = uncurry (&)
, , ( ).
(&) :
(<&>) :: Monad m => (a -> m b) -> (a -> m c) -> a -> m (b, c)
f <&> g = tupleM . (f & g)
emptyDirectory <&> copyStubFileTo :: FilePath -> IO ((),()), . ( ). (>&>) :: Monad m => (a -> m b) -> (a -> m c) -> a -> m c ( >>), (, , ). - , <.> :: Functor f => (b -> c) -> (a -> f b) -> a -> f c ( <=< Control.Monad).
(<.>) :: Functor f => (b -> c) -> (a -> f b) -> a -> f c
(f <.> g) x = f <$> g x
(>&>) :: (Monad m, Functor m) => (a -> m b) -> (a -> m c) -> a -> m c
f >&> g = snd <.> (f <&> g)
( Functor m, <$> `liftM`.) , >&>. " " >&>; " ". - , ; , , . , : -)