F# 为什么这些作业会产生不同的结果?
为什么 将产生F# 为什么这些作业会产生不同的结果?,f#,F#,为什么 将产生 let ab a b = a 5 + b let ab2 a b = a 5 +b 及 将产生 let ab a b = a 5 + b let ab2 a b = a 5 +b 为什么“+”和“b”之间的这个空格会造成这种差异?这完全取决于解析器如何优先考虑不同的语法选项以避免歧义 +既是二进制加法运算符又是一元“正”1运算符5+b是两个参数相加的应用;但是+b是应用于某些符号b的正运算符 因此 解析为: let ab a b = a 5 + b let ab2 a
let ab a b = a 5 + b
let ab2 a b = a 5 +b
及
将产生
let ab a b = a 5 + b
let ab2 a b = a 5 +b
为什么“+”和“b”之间的这个空格会造成这种差异?这完全取决于解析器如何优先考虑不同的语法选项以避免歧义
+
既是二进制加法运算符又是一元“正”1运算符<因此,代码>5+b是两个参数相加的应用;但是+b
是应用于某些符号b
的正运算符
因此
解析为:
let ab a b = a 5 + b
let ab2 a b = a 5 +b
a
是一个整数参数的函数,返回一个int,因此可以将其添加到b
;但是
解析为:
let ab a b = a 5 + b
let ab2 a b = a 5 +b
a
是两个参数的函数,无法推断它返回的类型
1我手头没有F#运算符列表,因此无法检查正确的名称。编辑:似乎我记不清了::-)。在表达式
+b
中,+
被解释为(仅以b
为参数)。