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

时间:2011-09-23 16:00:48

标签: 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

如您所见,唯一的区别是第二个示例中的符号之间存在一些空格。

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

2 个答案:

答案 0 :(得分:12)

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

  • x+3:x plus 3
  • x +3:语法错误:x后跟正值3

我自己已经遇到过这种情况(最常见的是-)。起初有点令人沮丧,但最终你会学会发现它。

虽然这不是没有意义的功能。有必要允许将负值应用于函数

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

答案 1 :(得分:3)

错误消息表明您正在尝试使用参数x(一元+上3)调用函数+3,因为x不是函数,因此This value is not a function and cannot be applied < / p>