let compoundInterest initial monthly years (interest : decimal) =
interest * (1.0m + interest) pown years
compoundInterest 100.0m 100.0m 5.0m 0.1m
我得到This value is not a function and cannot be applied.
,我认为这是由语法错误引起的。此代码有什么问题?
答案 0 :(得分:7)
函数应用程序的F#语法为:
f x
也就是说,每当编译器看到一个表达式,然后是空格,然后是另一个表达式,则编译器会将其视为函数应用程序,其中第一个表达式是函数,第二个表达式是参数。
在您的代码中,这被解析为函数应用程序:
(1.0m + interest) pown
其中(1.0m + interest)
是函数,pown
是参数。
后来,一旦编译器进行类型检查,就会发现(1.0m + interest)
实际上不是函数,因此它抱怨:该表达式不是函数,无法应用
我不确定您要做什么,但是从变量名称看来,您似乎在尝试计算复利,为此,您试图将(1+利息)提高到年的幂。
如果该假设正确,则您尝试调用pown
函数的方式是错误的。该函数需要两个参数,调用该函数的方式是先写一个函数名,然后是第一个参数,然后是第二个:
pown x y
或者,将其应用于您的代码:
pown (1.0m + interest) years