Syntax 为什么我的F#代码中的空格会导致错误?
我一直在修补F#Interactive 我不断得到奇怪的结果,但有一个我无法解释: 下面的代码返回66,这是我期望的值Syntax 为什么我的F#代码中的空格会导致错误?,syntax,f#,whitespace,Syntax,F#,Whitespace,我一直在修补F#Interactive 我不断得到奇怪的结果,但有一个我无法解释: 下面的代码返回66,这是我期望的值 > let f x = 2*x*x-5*x+3;; > f 7;; 以下代码引发语法错误: > let f x = 2*x*x - 5*x +3;; stdin(33,21): error FS0003: This value is not a function and cannot be applied 如您所见,唯一的区别在于第二个示例中的符号之间有
> let f x = 2*x*x-5*x+3;;
> f 7;;
以下代码引发语法错误:
> let f x = 2*x*x - 5*x +3;;
stdin(33,21): error FS0003: This value is not a function and cannot be applied
如您所见,唯一的区别在于第二个示例中的符号之间有一些空格
为什么第一个代码示例有效,而第二个代码示例导致语法错误?这里的问题是使用
+3
。在处理数字表达式上的+/-
前缀时,空格很重要
:x加3x+3
:语法错误:x后跟正值3x+3
-
)。一开始有点令人沮丧,但最终你会发现它
不过,这不是一个没有意义的功能。有必要允许对函数应用负值
:使用参数myFunc x-3
和x
-3
+3
(一元+3)调用函数x
,并且由于x不是函数,因此此值不是函数且无法应用
+3
正在将一元运算符+
应用于整数3
,不是二进制运算符+
。一如既往,感谢Stackers提供了信息丰富的答案!