itsme213 wrote: > I want to build such structures lazily, but be lazy only when the laziness > is needed i.e. not for :f0=>x, or [x, y, ...], or y.f1. And I would like to > force resolution of (selected or all) unresolved references either: > a) at a time of my choosing (raising exceptions if needed), or > b) incrementally whenever a given reference becomes resolvable, or > c) when something is done with that reference i.e. some method invoked on it > (line 6). I'm not sure if I'm overlooking something, but I'd use blocks for this. E.g. foo = LazyStruct.new bar = LazyStruct.new foo.bar { bar.foo } bar.foo = 5 Pardon the poor example. Does this make sense?