static interface
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Tue Nov 17 06:12:04 PST 2009
Leandro Lucarella wrote:
> Lars T. Kyllingstad, el 17 de noviembre a las 09:54 me escribiste:
>>> In some ways the current code is better, because it actually checks if
>>> a construct works or not, rather than requiring a specific function
>>> signature. Whether the code will work is really the minimal
>>> restriction you can place on the interface. A specific may be too
>>> tight. For instance, above you don't really care if empty returns
>>> bool or not. Just if you can test it in an "if".
>> Another, related way in which the current code is better is that it
>> doesn't care whether empty, front, and popFront are functions or
>> variables. As we know, the standard trick for infinite ranges is to
>> declare empty as an enum, not a function.
>
> Is not that hard to write:
> bool empty() { return false; }
> instead of
> enum bool empty = false;
That's why I mentioned infinite ranges. An infinite range is *defined*
as a range where empty is implemented as
enum bool empty = false;
isInfinite(Range) tests whether this is the case, which it wouldn't be
able to do if empty() was a function.
-Lars
More information about the Digitalmars-d
mailing list