On Wed, 3 Jan 2001, Michael Zawrotny wrote: > 1. How the #$!? do I read some data from a file. Good, I've > got the data, now I can work on it. Nope, now I have an "IO > thingie" whatever that is, but all of the standard functions want > a regular "thingie" now what? > I do not know if you actually wanted an answer to this, but I'm sick of hearing this FAQ everywhere when the answer is so simple. There are exactly two ways to do this (one of them is actually syntactic sugar for the other). 1. Use the do notation: do regularThingie <- IOThingie return (doWhateverYouWantWith regularThingie) 2. Use bind ( >>= ): IOThingie >>= \regularThingie -> return (doWhateverYouWantWith regularThingie) Note: Both constructs produces IO thingies. This is the real beauty of it, if you have a value that is dependent on the environment (i.e. a IO value) you can use it as a regular value inside one of the above constructs, but the result will always be an IO value (The result will depend on the environment because it uses a value dependent of the environment). This is no problem, just accept it. Can everyone include an answer to this FAQ everywhere, phleaze! /Lars L