Что-то такое же простое
class Thunk[+A](body: => A) {
lazy val result: A = body;
}
Это где-то определено?
Или, возможно, немного более изощренный
class Thunk[+A](body: => A) {
private[this] var evaluatedInternal = false;
lazy val result: A = {
evaluatedInternal = true;
body;
}
def evaluated: Boolean = evaluatedInternal;
}