putStrLn "Test" is a IO value, that prints the string "Test".
To sequence such monadic values, we use sequence or sequence_ (which ignores the results).
"sequence [a, b, c, d]" is equivalent to "a >> b >> c >> d"
"sequence_ [a, b, c, d]" is equivalent to "a >> b >> c >> d >> return ()"
There are similar functions mapM and mapM_, which can be used as follows.
mapM f [a, b, c]
== sequence (map f [a,b,c])
== sequence [f a, f b, f c]
== f a >> f b >> f c
and,
mapM_ f [a, b, c] == f a >> f b >> f c >> return ()
From mapM_, we can create a convenience function forM_
forM_ = flip mapM_
All the above are exported by Control.Monad