Существует ли какая-либо связь между функцией Curried / частично примененной функцией и функциями высшего порядка в scala - PullRequest
0 голосов
/ 23 сентября 2019

У меня путаница между функцией высшего порядка и частично примененной функцией.Могу ли я сказать, что частично примененная функция является функцией высшего порядка, потому что частично примененная функция также возвращает функцию?

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Частично примененная функция - это результат процесса частичного применения.Эта результирующая функция не обязательно должна быть высшего порядка, например, рассмотрим

val f: (Int, Int) => (Int) = (a, b) => a + b
val g: Int => Int = f(1, _) //  g is partially applied function

Здесь функция g является частично примененной функцией, и все же это первый порядок Int => Int.Однако сам процесс частичного применения действительно является процессом более высокого порядка, поскольку он принимает функцию и возвращает функцию, аналогично, возможно, дифференциальному оператору из исчисления, который также принимает функцию в качестве входных данных и возвращает функцию в качестве выходных.

Как примечание, карринг и частичное применение связаны, но не идентичны .

1 голос
/ 23 сентября 2019

Функция более высокого порядка означает, что вы можете передать одну или несколько функций в качестве параметров или получить их в результате.Функции такие же, как переменные.тогда как каррирование - это когда функция имеет несколько параметров, и вы указываете только несколько из них, поэтому вы получаете новую функцию.Таким образом, карри можно рассматривать как пример функции более высокого порядка, потому что вы возвращаете функцию, когда используете карри.Пример каррирования:

def plus(a :Int)(b: Int): Int = a + b
def plus5 = plus(5)

plus5 - это функция, и это своего рода функция высшего порядка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...