
On Sun, May 15, 2011 at 9:27 AM, Christopher Howard < christopher.howard@frigidcode.com> wrote:
I understand that one can bind the unwrapped results of IO functions to variables, and pass them to functions, like so:
main = do filecontents <- readFile "data.txt" putStrLn filecontents
But does the syntax allow you to cut out the middle man, so to speak, and bind the results directly to the parameter? Like
-- Tried this and it didn't work. main = do putStrLn (<- readFile "data.txt")
do-notation is just syntactic sugar for the ">>" and ">>=" operators. Your example gets translated internally to:
readFile "data.txt" >>= \filecontents -> putStrLn filecontents To get rid of that extra "filecontents", you could instead write: readFile "data.txt" >>= putStrLn HTH, Michael