In Scala, to express a recursive parser combinator:
val e = p | e
You can't define such a thing in Kotlin. Atleast, this was the case the last time I looked at it.
val e = operator_pipe(() => p, () => e)
Note that the operator_pipe() itself returns a function, which gets assigned as a value to `e`. So there is lots of implicit laziness.