fun main() { val perEnvCondition = false fun veryExpensiveCall() = println("I spend a long time") ::veryExpensiveCall.invokeIf { perEnvCondition } ?: println("I do nothing") } fun (() -> R).invokeIf(predicate: () -> Boolean): R? = if (predicate()) this() else null