Andrei Alexandrescu wrote:
Lars Kyllingstad wrote:
Michel Fortin wrote:
On 2009-04-12 11:09:51 -0400, Lars Kyllingstad
<pub...@kyllingen.nospamnet> said:
Andrei Alexandrescu wrote:
Lars Kyllingstad wrote:
I think isInfinite!() should be called isInfiniteRange!(). The
current name is, in my opinion, too general.
I'm undecided about this (and similar cases). isInfinite sits
inside std.range, so std.range.isInfinite is clear and
std.range.isInfiniteRange feels redundant. On the other hand, I
don't want to use too common symbols because then the user will be
forced to prefix them whenever they clash.
I'm not too worried about name clashes, I just think it sounds
wrong. If R is a range with infinitely many elements, I think it's
more correct to say "R is an infinite range" than to say "R is
infinite".
As an example of what I mean, let the range R be the sequence 1,
1/4, 1/9, ...:
alias Sequence!("1/(n*n)", 1) R
Then, isInfiniteRange!(R) should obviously yield true. From a
mathematical standpoint, I think the result of isInfinite!(R) is
less obvious. Yes, the range has infinitely many elements, but none
of them are infinite, nor is their sum infinite.
Perhaps it should be renamed to isUnbounded then.
...except that my example, and indeed any range produced by sequence,
recurrence, etc. are bounded at one end. Thus the term "infinite
range" is more precise, and fits in well with the mathematical terms
"infinite series" and "infinite sequence". Just not "infinite" alone. :)
-Lars
Finally! I was waiting for someone to make this point. "Bounded" would
be closer to "having values within a finite interval".
Andrei
There's a funny thing with floating-point numbers, though.
The range [real.max, real.infinity] contains only two elements, one of
which is infinity. Is that an infinite range?
It would be helpful to distinguish "contains arbitrary many
elements"/"length is undefined" from "contains the point at
infinity"/"includes the maximum representable element for this type".