
On Fri, Oct 31, 2003 at 05:30:06PM +0550, gangadhar npk wrote:
hi, I am a newbie to Haskell. I am reading the tutorial by Hal Daume III. Regarding the function types which are an extension of lambda calculus, I was wondering if at all it is possible to write a type that would return two values as the output - something like a square function which would take a pair and return a pair. I tried this, but there are errors
square :: (Num a, Num b) => (a ,b) square (x , y) = (x*x , y*y) How can I specify that the square functions output would be a pair ?
You forgot about function arguments in its type. It should be: square :: (Num a, Num b) => (a, b) -> (a, b) Next time try commenting out the type signature and see if the compiler can infer the type. Both Hugs and GHCi provide commands for inspecting types of values. Prelude> let square (x,y) = (x*x,y*y) Prelude> :type square forall a a1. (Num a1, Num a) => (a1, a) -> (a1, a) You can use :t as a shortcut.
thank you gangadhar
Best regards, Tom -- .signature: Too many levels of symbolic links