LazyEnvir lazy environment
superclass: EnvironmentRedirect
Environment with deferred evaluation and default values.
put(key, val) sets the value of the reference at key
at(key) returns a reference to the object at key.
See also: Environment, EnvironmentRedirect, ProxySpace.
General overview: JITLib
Consequently, calculations can be done with nonexisting objects which can then be assigned later.
Per default, a LazyEnvir returns instances of Maybe. See also Fdef.
// examples
l = LazyEnvir.push;
// default objects are created on access
~a;
~a.value; // defaults to 1
// operations on placeholders
(
~c = ~a + ~b;
~c.value;
)
// variables can be assigned later
(
~a = 800;
~b = { 1.0.rand };
~c.value;
)
// variables can be exchanged later
(
~b = { 1000.rand };
~c.value;
)
// making pattern space using LazyEnvir
a = LazyEnvir.new;
a.proxyClass=\PatternProxy;
a.push;
~x = Pseq([1, 2, 30], 1);
~y = Pseq([~x], inf);
z = ~y.asStream;
z.next;
z.next;
z.next;
~x = Pseq([100, 2, 300], 1);
z.next;
z.next;
z.next;
a.pop;