I’m new to Scala and FP. I’m learning by going through *Functional Programming Principles in Scala* on Coursera

I’m trying to understand the following function, `sum()`

, which sums all the integers between `a`

and `b`

:

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

The answer is `6`

, but if I try going through the function step by step I don’t arrive at the same answer:

First iteration of `loop`

takes `(1 + 1, 0 +1)`

or `(2, 1)`

as arguments.

Second iteration of `loop`

takes `(2 + 1, 1 + 2)`

or `(3, 3)`

as arguments.

After which the condition `(x > b)`

or `(3 > 3)`

is no longer `false`

and thus the function should return `acc`

which at this point is `3`

not `6`

which would be the correct answer.

What am I missing?

Thank you!