Library functions by example
In this section, we will write two slightly larger I/O programs that combine several tasks. This gives us the opportunity to introduce several often-used library functions.
Summing numbers
As a worked example, we will write a program that does the following:
- Reads an integer, n, from a line on the standard input
- Reads n more integers
- Displays the sum of those n integers
Reading an integer
We can accomplish the first sub-task by combining the getLine :: IO String
function with the parsing function, read :: Read a => String -> a
, as follows:
readInteger :: IO Int readInteger = do l <- getLine return (read l)
This small function has to reconcile the discrepancy of getLine
returning IO String
and read
taking String
. Haskell novices often try to convert IO String
to String
. However, this does not make sense. The...