Welcome to Scala version 2.10.2
Type in expressions to have them evaluated.
Type :help for more information.
scala> val fn = (x:Int) => x+1
fn: Int => Int = <function1>
scala> val fn1 = fn _
fn1: () => Int => Int = <function0>
scala> val fn2 = fn1 _
fn2: () => () => Int => Int = <function0>
I don't understand why the placeholder(without a suggested type) application to a function is creating a new curried function with prefixed additional void argument.
I was expecting a compiler error or at least a warning.
I guess it's so due to the uniform access principle: in REPL
val
is a field of object, not a local variable. And all notprivate[this]
fields are getter methods.So your code is something like this:
It works as expected with local variables:
Even though I can explain why it works this way, I still think this behavior can be considered a error.