我一直在修补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
如您所见,唯一的区别是第二个示例中的符号之间存在一些空格。
为什么第一个代码示例有效,而第二个代码示例导致语法错误?
答案 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>