在F#签名文件中,函数签名周围的括号有何意义?
f#
作为 .fsi 签名文件的使用者,两者之间有什么区别(如果有的话):
val sum : int -> int -> int
和
val sum : (int -> int -> int)
似乎第二个可以通过函数定义或函数“别名”来实现,但第一个只能通过函数定义来实现。
具有以下内容:
// .fsi
val add : int -> int -> int
val sum : int -> int -> int
// .fs
let add a b = a + b
let sum = add
产生错误
error FS0034: Module 'Butter' contains
val sum : (int -> int -> int)
but its signature specifies
val sum : int -> int -> int
但是,如果签名文件是:
// .fsi
val add : (int -> int -> int)
val sum : (int -> int -> int)
它编译正常。
这种行为是故意的吗,如果是的话,括号是如何改变界面的?