Cookbook/Interactivity
< Cookbook
Jump to navigation
Jump to search
Revision as of 21:26, 12 January 2014 by Morpheus (talk | contribs) (→Parsing command line arguments)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Input and output
Problem | Solution | Examples |
---|---|---|
printing a string | putStr | Prelude> putStr "Foo"
FooPrelude>
|
printing a string with a newline character | putStrLn | Prelude> putStrLn "Foo"
Foo
Prelude>
|
reading a string | getLine | Prelude> getLine
Foo bar baz --> "Foo bar baz"
|
Parsing command line arguments
Command line argument processing is provided by System.Environment library.
The following small program (tac) concatenates and prints the contents of files in reverse (or reads from stdin with no arguments).
-- import System.Environment import System.Exit main = getArgs >>= parse >>= putStrLn . tac tac = unlines . reverse . lines parse ["-h"] = usage >> exit parse ["-v"] = version >> exit parse [] = getContents parse fs = concat `fmap` mapM readFile fs usage = putStrLn "usage: tac [-vh] [file..]" version = putStrLn "Haskell tac 0.1" exit = exitWith ExitSuccess die = exitWith (ExitFailure 1)
Some example uses:
$ ./tac -h usage: tac [-vh] [file..]