[Haskell-beginners] Problems with one of my first examples

Tillmann Rendel rendel at daimi.au.dk
Mon Dec 15 17:45:08 EST 2008


Jeff C. Britton wrote:
> do nums <- askForNumbers; map sqrt nums
> 
> ERROR - Type error in final generator
> *** Term           : map sqrt nums
> *** Type           : [Integer]
> *** Does not match : IO a

Here (map sqrt nums) has type [Integer], so you cannot use it in a do 
expression for IO. Instead, you have to write something which produces 
an IO action.

> do nums <- askForNumbers; printList nums  -- works fine

Here, (printList nums) has type IO (), so it fits into the do expression 
and everything is fine.

If you want to print the list of square roots, you have to say so:

   do nums <- askForNumbers; printList (map sqrt nums)

Tillmann


More information about the Beginners mailing list