What is the difference between let add1 x = x + 1 and let add2 x = x +1. The accidental removal of space changed the type of function fromval add1 : x:int->int
toval add2 : x:(int -> 'a) -> 'a
As far as I understand, the first type statement says add1 maps int onto int. But what is the meaning of the second one.
Well, 'a represents a generic type, but how is the function 'add2' returning a generic?
Thanks for your help.
That's a quirk of F# syntax: a plus or minus sign immediately followed by a number literal is treated as a positive or negative number respectively, and not as an operator followed by a number.
> 42
it : int = 42
> +42
it : int = 42
> -42
it : int = -42
So your second example let add2 x = x +1 is equivalent to let add2 x = x 1. The expression x 1 means that x is a function and it's being applied to the argument 1, which is exactly what your type is telling you:
add2 : x:(int -> 'a) -> 'a
This says that add2 takes a function named x, which takes an int and returns some 'a, and that add2 itself also returns the same 'a.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With