| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Description | |||||||||||||||||||||||||
asdf. | |||||||||||||||||||||||||
Synopsis | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Entire File Handle Utilities | |||||||||||||||||||||||||
Opened Handle Data Copying | |||||||||||||||||||||||||
hCopy :: (HVIO a, HVIO b) => a -> b -> IO () | |||||||||||||||||||||||||
Copies from one handle to another in raw mode (using hGetContents). | |||||||||||||||||||||||||
hCopyProgress | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
hLineCopy :: (HVIO a, HVIO b) => a -> b -> IO () | |||||||||||||||||||||||||
Copies from one handle to another in text mode (with lines). Like hBlockCopy, this implementation is nice: hLineCopy hin hout = hLineInteract hin hout id | |||||||||||||||||||||||||
lineCopy :: IO () | |||||||||||||||||||||||||
Copies from stdin to stdout using lines. An alias for hLineCopy over stdin and stdout. | |||||||||||||||||||||||||
Disk File Data Copying | |||||||||||||||||||||||||
copyFileLinesToFile :: FilePath -> FilePath -> IO () | |||||||||||||||||||||||||
Copies one filename to another in text mode. Please note that the Unix permission bits are set at a default; you may need to adjust them after the copy yourself. This function is implemented using hLineCopy internally. | |||||||||||||||||||||||||
Line Processing Utilities | |||||||||||||||||||||||||
hPutStrLns :: HVIO a => a -> [String] -> IO () | |||||||||||||||||||||||||
Given a list of strings, output a line containing each item, adding newlines as appropriate. The list is not expected to have newlines already. | |||||||||||||||||||||||||
hGetLines :: HVIO a => a -> IO [String] | |||||||||||||||||||||||||
Given a handle, returns a list of all the lines in that handle. Thanks to lazy evaluation, this list does not have to be read all at once. Combined with hPutStrLns, this can make a powerful way to develop filters. See the lineInteract function for more on that concept. Example: main = do l <- hGetLines stdin hPutStrLns stdout $ filter (startswith "1") l | |||||||||||||||||||||||||
Lazy Interaction | |||||||||||||||||||||||||
Character-based | |||||||||||||||||||||||||
hInteract :: (HVIO a, HVIO b) => a -> b -> (String -> String) -> IO () | |||||||||||||||||||||||||
This is similar to the built-in interact, but works on any handle, not just stdin and stdout. In other words: interact = hInteract stdin stdout | |||||||||||||||||||||||||
Line-based | |||||||||||||||||||||||||
hLineInteract :: (HVIO a, HVIO b) => a -> b -> ([String] -> [String]) -> IO () | |||||||||||||||||||||||||
Line-based interaction over arbitrary handles. This is similar to wrapping hInteract with lines and unlines. One could view this function like this: hLineInteract finput foutput func = let newf = unlines . func . lines in hInteract finput foutput newf Though the actual implementation is this for efficiency: hLineInteract finput foutput func = do lines <- hGetLines finput hPutStrLns foutput (func lines) | |||||||||||||||||||||||||
lineInteract :: ([String] -> [String]) -> IO () | |||||||||||||||||||||||||
Line-based interaction. This is similar to wrapping your interact functions with lines and unlines. This equality holds: lineInteract = hLineInteract stdin stdout Here's an example: main = lineInteract (filter (startswith "1")) This will act as a simple version of grep -- all lines that start with 1 will be displayed; all others will be ignored. | |||||||||||||||||||||||||
Misc. Lazy | |||||||||||||||||||||||||
lazyMapM :: (a -> IO b) -> [a] -> IO [b] | |||||||||||||||||||||||||
Applies a given function to every item in a list, and returns the new list. Unlike the system's mapM, items are evaluated lazily. | |||||||||||||||||||||||||
Optimizations | |||||||||||||||||||||||||
optimizeForBatch :: IO () | |||||||||||||||||||||||||
Sets stdin and stdout to be block-buffered. This can save a huge amount of system resources since far fewer syscalls are made, and can make programs run much faster. | |||||||||||||||||||||||||
optimizeForInteraction :: IO () | |||||||||||||||||||||||||
Sets stdin and stdout to be line-buffered. This saves resources on stdout, but not many on stdin, since it it still looking for newlines. | |||||||||||||||||||||||||
Produced by Haddock version 0.8 |