
Excerpts from Tim Cowlishaw's message of Wed Aug 04 13:29:24 -0400 2010:
However, while the second half of the transformation above is catered for via runListT - I can't seem to work out how to do the first - namely, to write a function of type [IO a] -> ListT IO a . To be honest, I'm not entirely sure I've entirely got my head around Monad Transformers yet - does what I'm describing make any sense at all, and if so, is there any chance you could point me in the right direction towards implementing (and hopefully understanding) this?
ListT IO a = IO [a], so you're looking for a function [IO a] -> IO [a]. This function is called sequence :: Monad m => [m a] -> m [a] My best advice for you is to get rid of the newtype wrapping and unwrapping when you're trying to an understand a monad transformer. Cheers, Edward