Something as simple
class Thunk[+A](body: => A) {
lazy val result: A = body;
}
Is it defined somewhere?
Or perhaps a slightly more sohpisticated
class Thunk[+A](body: => A) {
private[this] var evaluatedInternal = false;
lazy val result: A = {
evaluatedInternal = true;
body;
}
def evaluated: Boolean = evaluatedInternal;
}
There are classes Name
and Need
in Scala that provide just that functionality. See also Scalaz Issue #427.