Why can’t I omit `::` operator when I specify a function argument?

For example, there is a snippet of code:

 fun even(x: Int) = x % 2 == 0 println(even(6)) // => true println(even(7)) // => false // Functions can take functions as arguments and return functions. fun not(f: (Int) -> Boolean): (Int) -> Boolean { return {n -> !f.invoke(n)} } // Named functions can be specified as arguments using the :: operator. val notEven = not(::even) 

Why can’t we just write val notEven = not(even)?

submitted by /u/Common_Egg_7522
[link] [comments]