I recently encountered the same Exception. It occurs when you open a file but don't close it using "hClose".
On Tue, Mar 17, 2015 at 2:55 PM, Mark Carter <alt.mcarter@gmail.com> wrote:Persuant to my previous question, I have made some progress, but there is something odd going on.
Suppose we want to implement the following algorithm, which is a little simpler than the original problem:
The user types the name of a file as input. Haskell then puts the text "it works" to that file. I tried this:
import System.IO
let openFileWrite name = openFile name WriteMode
h :: IO Handle
h <- fmap openFileWrite getLine -- you need to type in a file name
This looks wrong, because h presumably needs to be a fixed Handle. Being an IO Handle seems to imply it is mutable. Haskell doesn't complain, though.This is wrong because the type of `h` should be Handle, not IO Handle. `fmap` is not the correct function to use here, you use `fmap` to lift a pure function into some Functor. What you need to do is sequence these two IO actions, like this:name <- getLineh <- openFileWrite nameWhich is equivalent to this:h <- getLine >>= openFileWriteor this (`=<<` is just a flipped `>>=` operator):h <- openFileWrite =<< getLine-bob
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners