Copyright | (c) 2009 2010 Bryan O'Sullivan (c) 2009 Simon Marlow |
---|---|
License | BSD-style |
Maintainer | [email protected] |
Portability | GHC |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Efficient locale-sensitive support for lazy text I/O.
Skip past the synopsis for some important notes on performance and portability across different versions of GHC.
The functions in this module obey the runtime system's locale, character set encoding, and line ending conversion settings.
If you know in advance that you will be working with data that has a specific encoding (e.g. UTF-8), and your application is highly performance sensitive, you may find that it is faster to perform I/O with bytestrings and to encode and decode yourself than to use the functions in this module.
Whether this will hold depends on the version of GHC you are using, the platform you are working on, the data you are working with, and the encodings you are using, so be sure to test for yourself.
Note: The behaviour of functions in this module depends on the version of GHC you are using.
Beginning with GHC 6.12, text I/O is performed using the system or handle's current locale and line ending conventions.
Under GHC 6.10 and earlier, the system I/O libraries /do not support/ locale-sensitive I/O or line ending conversion. On these versions of GHC, functions in this library all use UTF-8. What does this mean in practice?
If you must use a non-UTF-8 locale on an older version of GHC, you will have to perform the transcoding yourself, e.g. as follows:
import qualified Data.ByteString.Lazy as B import Data.Text.Lazy (Text) import Data.Text.Lazy.Encoding (encodeUtf16) putStr_Utf16LE :: Text -> IO () putStr_Utf16LE t = B.putStr (encodeUtf16LE t)
readFile :: FilePath -> IO Text Source
Read a file and return its contents as a string. The file is read lazily, as with getContents
.
writeFile :: FilePath -> Text -> IO () Source
Write a string to a file. The file is truncated to zero length before writing begins.
appendFile :: FilePath -> Text -> IO () Source
Write a string the end of a file.
hGetContents :: Handle -> IO Text Source
Lazily read the remaining contents of a Handle
. The Handle
will be closed after the read completes, or on error.
hGetLine :: Handle -> IO Text Source
Read a single line from a handle.
hPutStr :: Handle -> Text -> IO () Source
Write a string to a handle.
hPutStrLn :: Handle -> Text -> IO () Source
Write a string to a handle, followed by a newline.
interact :: (Text -> Text) -> IO () Source
The interact
function takes a function of type Text -> Text
as its argument. The entire input from the standard input device is passed (lazily) to this function as its argument, and the resulting string is output on the standard output device.
getContents :: IO Text Source
Lazily read all user input on stdin
as a single string.
Read a single line of user input from stdin
.
putStr :: Text -> IO () Source
Write a string to stdout
.
putStrLn :: Text -> IO () Source
Write a string to stdout
, followed by a newline.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.8.3/docs/html/libraries/text-1.2.4.0/Data-Text-Lazy-IO.html