isInfinite isInadequate
monarch_dodra
monarchdodra at gmail.com
Tue Mar 12 08:02:43 PDT 2013
On Tuesday, 12 March 2013 at 14:30:00 UTC, Steven Schveighoffer
wrote:
> On Tue, 12 Mar 2013 06:49:56 -0400, monarch_dodra
> <monarchdodra at gmail.com> wrote:
>
>> On Tuesday, 12 March 2013 at 10:01:38 UTC, deadalnix wrote:
>>> I want to resurrect that thread. Can someone explains the
>>> benefices of isInfinite ? I fail to see how it really benefit
>>> the code.
>>
>> The advantage of "enum empty = false" is that algorithms gain
>> a great performance boost by optimizing out any "if
>> (r.empty)". This can be exploited for things like take, or
>> anything that iterates as a matter of fact. I don't think
>> anybody will argue that this is a bad approach.
>
> Wouldn't it automatically be optimized out? I mean if r.empty
> is an enum, it's like saying if(false) I would think even with
> optimizations off, this might be done.
>
> Not that I'm questioning the value of isInfinite (I'm neutral
> on it), but this is not a benefit.
>
> -Steve
Right, that's what I said. This first paragraph was just about
enum empty = false.
The actual "isInfinite" discussion comes later.
Another point: isInfinite is useful, if only to propagate
infiniteness. For example: "1.repeat().map"a * 2"()". If "map"
didn't know that repeat is infinite, it would simply provide the
"dumb" empty implementation, and the final range will have lost
it's infinite trait.
More information about the Digitalmars-d
mailing list