Q:

Why do Kotlin Lambda functions not execute when called?

In the following code I have 2 functions - first one wrapped in a lambda body and the other without.
fun first() = { println("first")}
fun second() = println("second")

first()
second()

Only second() prints - why is this?

A:

The first one is a function that returns a function. What happens in fact is that first() returns another function that prints "first", but doesn't execute it.
To do this you have to call it by adding another set of of parenthesis:
first()()
// Or
val resultOfFirst = first()
resultOfFirst()

This happens because the = sign for functions is analogous to a return statement and when you wrap things in {} you're in fact creating a lambda. Hence, first returns a lambda, but doesn't execute it

