Andrei Alexandrescu wrote:
bearophile wrote:
Andrei Alexandrescu:
s/recursive/transitive/
Litmus test: recursive could recurse forever. Transitive never does.
I have used the word recursive because the functions I have designed
(and I think they are designed correctly) call themselves until they
stop calling themselves because a stopping criterion is met. That's
recursivity, I think.
But then what if you have a web of class objects that ultimately will
close a cycle?
Transitive: you'd use a worklist. Recursive: you'd recurse forever.
Andrei
bearophile explicitly said "structs". I assume it would extend to
primitives, treating pointers as integer types. I also assume it would
call .toHash on any object.
This would still allow you to recurse infinitely, but it would require
added effort:
struct S
{
C c;
}
class C
{
S s;
this () { s.c = this; }
auto toHash () { return s.toHash; }
}