Haskell IO et la fermeture des fichiers

Quand j'ouvre un fichier pour la lecture en Haskell, j'ai constaté que je ne peux pas utiliser le contenu du fichier après sa fermeture. Par exemple, ce programme permettra d'imprimer le contenu d'un fichier:

main = do inFile <- openFile "foo" ReadMode
          contents <- hGetContents inFile
          putStr contents
          hClose inFile

Je m'attendais à ce interchanger l' putStr ligne avec la hClose ligne aurait aucun effet, mais ce programme imprime rien:

main = do inFile <- openFile "foo" ReadMode
          contents <- hGetContents inFile
          hClose inFile
          putStr contents

Pourquoi cela se produit? Je suppose qu'il a quelque chose à voir avec l'évaluation différée, mais j'ai pensé que ces expressions obtenir séquencé donc il ne serait pas un problème. Comment voulez-vous mettre en œuvre une fonction comme readFile?

InformationsquelleAutor Jay Conrod | 2008-11-17