Я пытаюсь понять преимущества обработки некоторых приложений в Scala. Пожалуйста, рассмотрите следующий код:
def sum(f: Int => Int) = (a: Int, b: Int) => f(a) + f(b)
def sum2(f: Int => Int, a: Int, b: Int): Int = f(a) + f(b)
def sum3(f: Int => Int)(a: Int, b: Int): Int = f(a) + f(b)
val ho = sum({identity})
val partial = sum2({ identity }, _, _)
val currying = sum3({ identity })
val a = currying(2, 2)
val b = partial(2, 2)
val c = ho(2, 2)
Итак, если я могу легко вычислить частично прикладную функцию, каковы преимущества каррирования?