Fully transitive const is not necessary
Jason House
jason.james.house at gmail.com
Wed Apr 2 18:42:49 PDT 2008
Walter Bright wrote:
> Jason House wrote:
>> Walter Bright wrote:
>>
>>> If you do away with transitive const, you cannot have invariant either.
>>> Const allows you to reuse code that works on invariants to work with
>>> mutables, too.
>>>
>>> Logical const just utterly breaks the whole system. Every scheme we've
>>> looked at for logical const winds up in some way breaking invariants. If
>>> invariants are broken, the advantages of them all just go away. I
>>> suspect that logical const is like perpetual motion - if you think
>>> you've solved it, you've just made a mistake somewhere <g>. I also
>>> suspect that the failure of logical const validates the D scheme of
>>> invariants as being correct - there shouldn't be any holes in it.
>>>
>>> You're right that invariant by itself is not enough to specify a pure
>>> function, a pure function also cannot read or write global state. But
>>> invariant is still a necessary condition, it's just not sufficient.
>>
>> Is it possible to describe what tricks the compiler can do given:
>> A. transitive const w/ mutable access to globals/statics
>> B. transitive invariance w/ mutable access to globals/statics
>> C. transitive const w/ const access to globals/statics
>> D. transitive invariance w/ invariant access to globals/statics
>>
>> It'd be extremely helpful to have that kind of discussion in the const
>> FAQ. Without it, I feel like we're all discussing theoretical stuff with
>> little basis for our arguments.
>
> Sure, but static class members are *not* part of the transitive closure
> state of the object. They're just global variables.
That's why I lumped the two together :)
Does saying sure mean that we can look forward to seeing some info along
those lines?
>> PS: I went to digitalmars and couldn't find the const FAQ. It's not
>> linked to from the normal FAQ and is not included in the left-side bar on
>> the D 2.0 page(s).
>
> That'll happen with the next update.
Thanks.
More information about the Digitalmars-d
mailing list