
Hello, First of all, putStrLn has type IO (), so b is pretty useless in your code, it's going to have type (), and the only value of this type is (). The simplest way to perform some action based on a list and discard the results is mapM_: mapM_ (\_ -> putStrLn "Test") [1..4] though if you discard the list's elements too, you can use sequence_ and replicate instead: sequence_ . replicate 4 $ putStrLn "Test" As a side note, if you actually want to combine monads (like list and IO) you can use monad transformers. The ListT type from transformers library has some issues as far as I know, but you can use the one from pipes, for example. Have a look at: http://www.haskellforall.com/2014/11/how-to-build-library-agnostic-streaming... Best regards, Marcin Mrotek