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...