On 09/16/2014 09:08 PM, Robin wrote:

> struct DeterministicState {

Structs are value types. When they are copied, the mutations that you expect may be happening on a copy.

I don't understand what exactly should happen but the following changes produce at least a different output. :)

1) Change the 'struct' above to 'class':

class DeterministicState {

2) Use the 'override' keyword with toString:

     override string toString() const {

3) Create the objects with new:

    auto s0 = new DeterministicState("s0", false);
    auto s1 = new DeterministicState("s1", false);
    auto s2 = new DeterministicState("s2", true);

Here is the output after that.

s0 has NO next for 0
s1 has NO next for 0
s0 has NO next for 0
s1 has NO next for 1
s0
s1
s0
s1
s2
Trace Length = 5

4) Also, the following conditional seems backward to me:

>              if (currentState.hasNext(c) == false) {
>                  writeln(currentState.toString() ~ " has next for " ~
> to!string(c));

Should it not be simply 'if (currentState.hasNext(c))'?

Ali

Reply via email to