an old topic (pun intended)

bearophile bearophileHUGS at
Wed Oct 26 17:19:57 PDT 2011

Davidson Corry:

>      (continuing a thread from D.learn)

I think you have written this post in digitalmars.D in a moment when the limited brain power is busy with lot of other things :-)

I'd like some form of prestate to be implemented in D2. Usually I use manually managed ghost variables (inside a debug{}) to solve this problem, but a more built-in solution is better and more standard.

> Eiffel supports an 'old' construct in post-conditions.

It's often named "prestate".

>      out(result, X preX = exprX, Y preY = exprY) {   // <== prestate 

I'd like something lighter, syntax-wise, where the is no need to state new and old names and types:

>      out(result, exprX, exprY) {

And then the compiler lets you access in the postcondition the old variables in some standard way, like:

in.exprX, in.exprY

Despite this is is probably better looking:

old.exprX, old.exprY

Here "old" doesn't need to be keyword, it's like the local name of a struct instance.

As discussed in D.learn there is no need for deep copying of the old variables. If it's required, then the programmer has to do it manually by herself. This avoids lot of implementation complexities.


More information about the Digitalmars-d mailing list