On 31.08.2011 09:35, bearophile wrote:
Don:

If caching is the _only_ case which is required,

They have developed this observational purity plus a way to enforce it, to 
allow static analyzability of contracts (so they are allowed to call only 
observationally pure methods), while keeping them flexible enough.

That's not the impression I got, though I didn't read it very carefully.
It seemed to me that what they have, is a runtime check (an assert that compares a read from a static variable, with a pure function; if they're the same, then the static variable isn't providing any extra state). The static analysis is used to ensure that the runtime check is always present.

They focused on the example of caching, but I found that a bit misleading, since you can easily get some kind of "real" purity in that case (there is no observable state AND there are no observable side-effects). But this is not true of other forms of observational purity. I do not see how allowing a call to an impure function from inside a pure one, could ever be anything other than a convention. So I don't see how the logfile example could possibly be statically checked.

Reply via email to