Sintaxe de curry na escala
A sintaxe do curry no scala é, por exemplo,
def f(x: Int, b: Int) = x + y
é
def f(x: Int)(b: Int) = x + y
E currying de soma para soma para determinado intervalo aeb é
def sum(f: Int => Int, a: Int, b: Int) = {
...
}
sum(x=>x, 3, 6) // outcome is 18 (3+4+5+6)
é
def sum(f: Int => Int): (Int, Int) => Int = {
def sumF(a: Int, b: Int): Int =
if (a > b) 0
else f(a) + sumF(a + 1, b)
sumF
}
sum(x=>x)(3, 6) // outcome is 18 (3+4+5+6)
Mas eu não entendo por que dois pontos (:) existe entre (f: Int => Int) e (Int, Int)
nodef sum(f: Int => Int): (Int, Int) => Int = {
ao invés de
def sum(f: Int => Int)(Int, Int) => Int = {