
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
On 1 May 2015 at 18:10, Shishir Srivastava
Hi,
Please can anyone point out the correct way of doing this - I am simply trying to print "Test" in a loop based on the counter derived from the list -
---- do _ <- [1..4] b <- putStrLn "Test" return b ---
The intended output is to print 'Test' 4 times.
Clearly there is a mismatch between the Monad types but I can't see how to achieve this without causing the conflict.
Thanks, Shishir
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-- Regards Sumit Sahrawat