Package gnu.mapping
Interface Lazy<T>
public interface Lazy<T>
A lazy value is one that may be calculated on demand.
The primary implementation class is
Promise
, but
Future
also implements Lazy
.
Primitive operations (such as arithmetic) require non-lazy (or "eager") values;
in Kawa these are automatically evaluated ("forced")
using Promise.force(java.lang.Object)
or equivalent.
In Kawa all objects are considered eager (non-lazy) unless the
object's class implements Lazy
, though note that an eager value
may contain lazy components (for example an eager vector of lazy values).
Note that the compiler assumes that Promise.force(java.lang.Object)
is a no-op and
does not need to be emitted unless the type of the value implements
Lazy
, or the class is Object
.
(See LazyType.maybeLazy(gnu.bytecode.Type)
.)
-
Method Summary
-
Method Details
-
getValue
T getValue()Return the actual value. Note thatgetValue()
may returnthis
, if this object isn't actually lazy. It may also return another lazy value. Normally you should usePromise.force{val}
to extra a non-lazy (eager) value.
-