The motivation for const (the big picture)

Robert Fraser fraserofthenight at gmail.com
Mon Jan 7 00:10:42 PST 2008


Bill Baxter wrote:
> Dan wrote:
>> Bill Baxter Wrote:
>>> Jason House wrote:
>>>> I've also heard (but never seen
>>>> justification/explanation) that invariant helps with functional
>>>> programming.
>>> I think it only helps in the sense that it makes automatic 
>>> parallelization of functional-style programs possible.  If I foreach 
>>> over some data structure and all the inputs are invariant, then the 
>>> compiler is free to do that in any order or in parallel because it 
>>> knows that executing a function on one element cannot possibly change 
>>> the value of another element by any means.
>> [snip]
>>
>> Invariant allows for alot of assumptions to be made about something; 
>> but it's because we assume merrily that it's okay for the program to 
>> crash if something changes out from under us even if the program is 
>> paused.
>>
>> So we can:
>> - fearlessly run parallel functions over the same data
>> - cache something and expect it to be correct indefinitely
>> - trust our libraries, and 3rd parties not to mangle our stuff
>> - catch accidental writes to something we wanted read-only
>> - make guarantees to clients and employers (our code *cannot* change 
>> your x)
>> - be aware the opposite is probably true for non-invariants
>>
>> In all honesty though, we must know it's a bluff.  The code *can* 
>> change out from under you.  It just won't by your own hand.
> 
> So you're saying the likely usage patterns will involve giving the 
> compiler "hints" in the form of casts to invariant on data that actually 
> isn't?
> 
> --bb

I think he's trying to say that it's possible to cast away invariant.



More information about the Digitalmars-d mailing list