Is there a function foo that does

foo :: a -> [a -> m a] -> a

So 

foo 3 [x,x,x] = return 3 >>= x >>= x >>= x

I don't think replicateM and sequence do this. At least I can't figure it out.