Haskell Language Comprobación de condiciones de fin de archivo


Ejemplo

Un poco contrario a la intuición de la forma en que lo hacen las bibliotecas de E / S estándar de otros idiomas, el isEOF de Haskell no requiere que realice una operación de lectura antes de verificar una condición de EOF; El tiempo de ejecución lo hará por ti.

import System.IO( isEOF )


eofTest :: Int -> IO ()
eofTest line = do
    end <- isEOF
    if end then
        putStrLn $ "End-of-file reached at line " ++ show line ++ "."
    else do
        getLine
        eofTest $ line + 1


main :: IO ()
main =
    eofTest 1

Entrada:

Line #1.
Line #2.
Line #3.

Salida:

End-of-file reached at line 4.