Так что я немного смущен относительно того, как работают карри в Scala. У меня есть следующий код, который компилируется, но я не уверен, как!Вызов карриных функций в Scala?
def fixedPoint(f: Double => Double, initialGuess: Double) = {
//dummy impl, does nothing.
}
def averageDamp(f: Double => Double)(x: Double) = (x + f(x))/2
def sqrt(x: Int) = {
fixedPoint(averageDamp(y => x/y))(1)
}
Этот код компилируется нормально, но я бы подумал averageDamp
потребности также принять еще один параметр? Так должно быть:
fixedPoint(averageDamp(y=> x/y)(1))(1)
Но это не скомпилировано, и я получаю сообщение о несоответствии типа; найдено: Double требуется: Двойная ⇒ Двойной
Ниже не компилируется, что имеет смысл:
val num = averageDamp(y => x/y)
Это дает сообщение об ошибке компиляции: «отсутствует список аргументов для метода averageDamp в объекте Foo Непримененные методы только преобразованный в , функционирует, когда ожидается тип функции. "
Так что я не уверен, почему он компилируется при вызове averageDamp с одним параметром внутри вызова fixedPoint, но не скомпилируется, когда я вызываю его самостоятельно.
Любая помощь будет отличной.
извините, фиксированный опечатка. – user1974753
Ваш код, который вы утверждаете, компилируется на самом деле не из-за отсутствия параметра ... –