fun greet(name: String, greeting: String = "Hello") = "$greeting, $name!"
fun report(): Unit = println("done")
// *** before: ***
// a wrapping lambda was needed to skip the default argument
val oldRef: (String) -> String = { name -> greet(name) }
// *** in version 1.4: ***
val one: (String) -> String = ::greet // greeting is taken from its default
//value
val two: (String, String) -> String = ::greet
// a reference to a function returning Unit fits a type that returns a value
val any: () -> Any = ::report
fun main() {
println(oldRef("Kotlin"))
println(one("Kotlin"))
println(two("Kotlin", "Hi"))
println(any())
}