函数式编程对我来说很新,似乎无法理解如何将一个函数用作另一个函数的参数。finalvalue应该在一个周期后计算最终值,finalvalue2则在两个周期后计算最终值。
interest :: Float -> Float -> Float
interest capital rate = capital * rate * 0.01
finalvalue :: Float -> Float -> Float
finalvalue capital rate = capital + interest capital rate
finalvalue2 :: Float -> Float -> Float
finalvalue2 capital rate = finalvalue capital rate + interest finalvalue capital rate rate
I get this:
Couldn't match expected type `Float'
against inferred type `Float -> Float -> Float'
In the first argument of `interest', namely `finalvalue'
In the second argument of `(+)', namely
`interest finalvalue capital rate rate'
In the expression:
finalvalue capital rate + interest finalvalue capital rate rate
我确定我在这里漏了一个基本点,但我就是找不出来是什么。
interest
中声明的参数数量以及在finalvalue2
中应用的参数数量。您发现了什么问题吗? - fuz$
在这里不起作用,因为函数调用不是最后一个参数。 - sepp2k