[Haskell] Files and lazyness
wolfgang at jeltsch.net
Mon Aug 1 12:28:06 EDT 2005
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
More information about the Haskell