I am not 100% sure what exactly is the problem, but I strongly suspect that this is not what you think.
Try for example
var plusTen = curriedNewSum(_)
You will see that it will return Function1[Int, Function1[Int, Int]] . Now try the following:
var plusTen = (curriedNewSum(_))(10)
And see how it works! Well, that means:
var plusTen = ((x: Int) => curriedNewSum(x))(10)
While the other way translates to:
var plusTen = (x) => curriedNewSum(x)(10)
Something about how the function expands captivates the type inference.
source share