Am Donnerstag, 28. Juli 2005 20:01 schrieb Diego y tal:
I was developing a web site using haskell programs as cgi's, and I found a strange behavior that I would like to know whether it is normal. I have reduced the "problem" to the next program:
fEntrada = "fich.txt" fSalida = "fich.txt"
creaFich :: IO() creaFich = writeFile fEntrada "me molo"
main :: IO () main = do x <- readFile fEntrada -- print x -- In the second try, uncomment this line writeFile fSalida "" writeFile fSalida x
Running the next commands (suposing that $ is the prompt of a linux shell and main> is the prompt of hugs)
main> creaFich main> main $ cat fich.txt
will give us different results if we comment or uncomment the second line of the main body, although the meaning of the program is the same.
In my opinion, the program should signal an error if the print x line is commented out since then the read handle isn't closed but semi-closed at the point of the first writeFile, and therefore write access shouldn't be allowed (see library documentation of System.IO). In fact, GHC and GHCi behave this way.
[...]
Regards, Wolfgang