On Sunday, September 25, 2011 17:46:00 Walter Bright wrote: > On 9/23/2011 9:11 PM, Jonathan M Davis wrote: > > Okay. I'm not saying that we should necessarily implement this. I'm just > > looking to air out an idea here and see if there are any technical > > reasons why it can't be done or is unreasonable. > > Andrei and I talked about this some time back. Where it ran aground was > Andrei wanted a way to mark the object as 'dirty' so it would get reloaded. > We couldn't find a way that didn't look like a mess. > > It also has problems if you try and add 'const' to it, because it is under > the hood not const. Nor is it immutable or thread safe.
Well, that's why I tried to find a solution specifically for lazy loading as opposed to a more general caching mechanism. Using const with a more general caching mechanism seems like it would be _really_ hard to do if not outright impossible, but it at least seems like it may be possible to do it with a single, lazy load, since the value never changes once it's been set. And the idea with immutability and shared was that they would force eager-loading so that they wouldn't be a problem. The whole thing becomes vastly more complicated if you try and have a more general caching mechanism. On the whole, it looks to me like my idea could work, but there may be complications with regards to what you can allow in the initializer function for the lazy member variable. Sorting those out could render the idea more or less useless, and even if it works perfectly exactly as I suggested, I don't know that what it adds merits the extra complexity that it requires. It would be very nice if we could expand const to be able to allow for some level of controlled, logical constness, but the ultimate problem is finding a way to control it. If it could be controlled, then there are probably ways to make it work with immutable (such as eliminating the caching in the case of immutable), but it's a very difficult problem, and I'm not at all convinced that it's ultimately solvable. I was just hoping to find a partial solution. - Jonathan M Davis