Thanks Bryan and Derek. This works! Logo ----- Original Message ---- From: Derek Elkins <derek.a.elkins@gmail.com> To: Bryan O'Sullivan <bos@serpentine.com> Cc: Loganathan Lingappan <loganathan.lingappan@yahoo.com>; haskell-cafe@haskell.org Sent: Saturday, December 8, 2007 4:53:54 PM Subject: Re: [Haskell-cafe] Type error in final generator On Sat, 2007-12-08 at 16:39 -0800, Bryan O'Sullivan wrote:
Loganathan Lingappan wrote:
main = do hSetBuffering stdin LineBuffering numList <- processInputs foldr (+) 0 numList
The type of main is understood to be IO (), so it can't return anything. You could work around this by rewriting the last line above as follows:
print (foldr (+) 0 numList)
This prints the number, which is presumably what you want, and print has type IO (), so it works out nicely here.
Nitpicking: Actually, as the error message says, the type of main is IO a so it can 'return' -anything- and that will be discarded as the type makes clear. The issue is that foldr (+) 0 numList :: Integer and that's not IO a for any a. Either way, Bryan's suggestion is probably what you want.