Personal tools

Cookbook/Interactivity

From HaskellWiki

< Cookbook(Difference between revisions)
Jump to: navigation, search
(smaller headlines)
m
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Reading a string ==
+
== Input and output ==
Strings can be read as input using [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AgetLine getLine].
 
<haskell>
 
Prelude> getLine
 
Foo bar baz
 
"Foo bar baz"
 
</haskell>
 
   
== Printing a string ==
+
{| class="wikitable"
Strings can be output in a number of different ways.
+
|-
<haskell>
+
! Problem
  +
! Solution
  +
! Examples
  +
|-
  +
| printing a string
  +
| [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AputStr putStr]
  +
|<haskell>
 
Prelude> putStr "Foo"
 
Prelude> putStr "Foo"
 
FooPrelude>
 
FooPrelude>
 
</haskell>
 
</haskell>
As you can see, [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AputStr putStr] does not include the newline character `\n'. We can either use putStr like this:
+
|-
<haskell>
+
| printing a string with a newline character
Prelude> putStr "Foo\n"
+
| [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AputStrLn putStrLn]
Foo
+
|<haskell>
</haskell>
 
Or use [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AputStrLn putStrLn], which is already in the Standard Prelude
 
<haskell>
 
 
Prelude> putStrLn "Foo"
 
Prelude> putStrLn "Foo"
 
Foo
 
Foo
  +
Prelude>
 
</haskell>
 
</haskell>
We can also use [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3Aprint print] to print a string, '''including the quotation marks.'''
+
|-
<haskell>
+
| reading a string
Prelude> print "Foo"
+
| [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AgetLine getLine]
"Foo"
+
|<haskell>
  +
Prelude> getLine
  +
Foo bar baz --> "Foo bar baz"
 
</haskell>
 
</haskell>
  +
|}
  +
  +
   
 
== Parsing command line arguments ==
 
== Parsing command line arguments ==
   
TODO
+
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).
  +
  +
<pre>
  +
--
  +
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)
  +
</pre>
  +
  +
Some example uses:
  +
  +
<pre>
  +
$ ./tac -h
  +
usage: tac [-vh] [file..]
  +
</pre>
  +
  +
== The environment ==
  +
  +
Many programs need access to computer environment variables. On POSIX systems, access to all variables is by
  +
  +
<pre>
  +
import System.Environment
  +
</pre>
  +
  +
NOTE: example uses to be added

Latest revision as of 21:31, 12 January 2014

[edit] 1 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"


[edit] 2 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..]

[edit] 3 The environment

Many programs need access to computer environment variables. On POSIX systems, access to all variables is by

import System.Environment

NOTE: example uses to be added