Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 为什么我的F#代码中的空格会导致错误?_Syntax_F#_Whitespace - Fatal编程技术网

Syntax 为什么我的F#代码中的空格会导致错误?

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 如您所见,唯一的区别在于第二个示例中的符号之间有

我一直在修补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
如您所见,唯一的区别在于第二个示例中的符号之间有一些空格


为什么第一个代码示例有效,而第二个代码示例导致语法错误?

这里的问题是使用
+3
。在处理数字表达式上的
+/-
前缀时,空格很重要

  • x+3
    :x加3
  • x+3
    :语法错误:x后跟正值3
我自己也曾多次遇到过这种情况(最常见的是
-
)。一开始有点令人沮丧,但最终你会发现它

不过,这不是一个没有意义的功能。有必要允许对函数应用负值

  • myFunc x-3
    :使用参数
    x
    -3

错误消息表示您正试图使用参数
+3
(一元+3)调用函数
x
,并且由于x不是函数,因此
此值不是函数且无法应用
+3
正在将一元运算符
+
应用于整数
3
,不是二进制运算符
+
。一如既往,感谢Stackers提供了信息丰富的答案!