需要从coursera的scala固定点进行解释

需要从coursera的scala固定点进行解释,scala,functional-programming,square-root,coursera-api,Scala,Functional Programming,Square Root,Coursera Api,我正在看coursera教的Scala函数编程的视频。我偶然发现了这些代码 def averageDamp(f: Double => Double)(x: Double) = (x + f(x)) / 2 以及作为 def sqrt(x: Double): Double = fixedPoint(averageDamp(y => y / x))(1) 但是不能在表单中使用它 averageDamp(x => x) 它说这个论点是不存在的。上述案例中的论点也不存在。

我正在看coursera教的Scala函数编程的视频。我偶然发现了这些代码

def averageDamp(f: Double => Double)(x: Double) = (x + f(x)) / 2
以及作为

  def sqrt(x: Double): Double = fixedPoint(averageDamp(y => y / x))(1)
但是不能在表单中使用它

  averageDamp(x => x)

它说这个论点是不存在的。上述案例中的论点也不存在。谁来帮忙。提前感谢:)

这篇文章的关键词是
currying
。当按上述定义
averageDamp
时,
averageDamp
将需要两个参数。当您仅使用第一个参数编写它时,它将返回一个函数(闭包),该函数接受另一个参数。这就是为什么当你像
averageDamp(x=>x)
那样调用它时,它会说
参数丢失了。您只需调用一个不带参数的函数,而该函数需要一个参数。要实际计算该值,您应该像
averageDamp(some_函数)(double_值)
那样调用它


签出此项:

此项的关键字是
currying
。当按上述定义
averageDamp
时,
averageDamp
将需要两个参数。当您仅使用第一个参数编写它时,它将返回一个函数(闭包),该函数接受另一个参数。这就是为什么当你像
averageDamp(x=>x)
那样调用它时,它会说
参数丢失了。您只需调用一个不带参数的函数,而该函数需要一个参数。要实际计算该值,您应该像
averageDamp(some_函数)(double_值)
那样调用它


检查此项:

多参数列表方法的部分应用只能(a)显式(如
averageDamp(x=>x)
)或(b)在函数上下文中隐式(如
val f:Double=>Double=averageDamp(x=>x)
)。我猜想,
fixedPoint
需要
Double=>Double
,因此我们有选项(b)多参数列表方法的部分应用只能(a)显式(如
averageDamp(x=>x)
)或(b)在函数上下文中隐式(如
valf:Double=>Double=averageDamp(x=>x)
)。我猜,
fixedPoint
需要
Double=>Double
,所以我们有选项(b)
,当您使用第一个参数调用它时,它将返回一个函数(闭包)
这部分是错误的。您不能仅使用第一个参数(这里技术上是第一个参数列表)调用它,除非您处于函数上下文中,Scala知道您需要一个函数,并且缺少的是一个完整的参数列表。您正确的调用在这里不是正确的动词。我在计算平方根。仍然不能使用as:averageDamp(y=>x/y)(1)
当您使用第一个参数调用它时,它将返回一个函数(闭包)
这部分是错误的。您不能仅使用第一个参数(这里技术上是第一个参数列表)调用它,除非您处于函数上下文中,Scala知道您需要一个函数,并且缺少的是一个完整的参数列表。您正确的调用在这里不是正确的动词。我在计算平方根。仍然不能用作:averageDamp(y=>x/y)(1)