Haskell:
Lettura di un file di testo
How to:
Leggere tutto il contenuto di un file:
import System.IO
main :: IO ()
main = do
content <- readFile "esempio.txt"
putStrLn contentOutput:
Questo è il contenuto del file di testo.Leggere riga per riga:
import System.IO
stampaRighe :: Handle -> IO ()
stampaRighe handle = do
eof <- hIsEOF handle
if eof
then return ()
else do
riga <- hGetLine handle
putStrLn riga
stampaRighe handle
main :: IO ()
main = do
handle <- openFile "esempio.txt" ReadMode
stampaRighe handle
hClose handleDeep Dive
La lettura dei file di testo in Haskell è stata storicamente influenzata dal desiderio del linguaggio di trattare le operazioni di input/output (IO) in un modo funzionale pur mantenendo la purezza. Per questo motivo, le operazioni IO sono segregate nel tipo IO.
Esistono alternative alla funzione readFile, come readLn o pacchetti di terze parti come text e bytestring che offrono performance migliorate o ulteriori funzionalità.
In dettaglio, readFile è una funzione non bloccante, che significa che viene restituito immediatamente un “handle” per i dati, e i dati vengono letti effettivamente quando se ne ha bisogno. Questo può essere utile per la gestione di grandi quantità di dati senza sovraccaricare la memoria.
See Also
- Haskell Docs - System.IO
- Pacchetto
text - Pacchetto
bytestring - Tutorial su Learn You a Haskell for Great Good!