As the consumer of an .fsi signature file what difference, if any, is there between:
val sum : int -> int -> int
and
val sum : (int -> int -> int)
It seems that the second can be implemented by a function definition or by a function 'alias', but the first can only be implemented by a function definition.
With the following:
// .fsi
val add : int -> int -> int
val sum : int -> int -> int
// .fs
let add a b = a + b
let sum = add
an error is generated
error FS0034: Module 'Butter' contains
val sum : (int -> int -> int)
but its signature specifies
val sum : int -> int -> int
however if the signature file is:
// .fsi
val add : (int -> int -> int)
val sum : (int -> int -> int)
it compiles ok.
Is this behaviour intentional, and if so how are the parentheses changing the interface?