[Haskell-cafe] Type error in final generator
Hi, I am new to Haskell. I wrote the following code: module Main where import IO main = do hSetBuffering stdin LineBuffering numList - processInputs foldr (+) 0 numList processInputs = do putStrLn Enter a number: strNum - getLine let num = read strNum if num == 0 then return [] else do rest - processInputs return (num : rest) And am getting the following errors: ERROR Ex310.hs:6 - Type error in final generator *** Term : foldr (+) 0 numList *** Type : Integer *** Does not match : IO a Any pointers to the source of this error would be appreciated. Thanks, Logo ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Type error in final generator
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. b ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
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. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Type error in final generator
Thanks Bryan and Derek. This works! Logo - Original Message From: Derek Elkins [EMAIL PROTECTED] To: Bryan O'Sullivan [EMAIL PROTECTED] Cc: Loganathan Lingappan [EMAIL PROTECTED]; 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. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe