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