How are these two higher-order functions different?

Viewed 150

The following two higher-order functions yield the same result, but I'm having trouble understanding the difference between the two. In fact, I don't understand 1). How can a function have two sets of ()?

1)

def sum(f: Int => Int) (a: Int, b: Int) = {
    def loop(a: Int, acc: Int) : Int =
        if (a > b) acc
        else loop (a + 1, f(a) + acc)
    loop (a, 0)
} 

2)

def sum(f: Int => Int,  a: Int, b: Int) = {
      def loop(a: Int, acc: Int) : Int =
        if (a > b) acc
        else loop (a + 1, f(a) + acc)
      loop (a, 0)
} 
1 Answers
Related