>> Use floor and ceiling on non-integer endpoints
>>
>> (%i11) sqrt(2) .. sqrt(15);
>> (%o11) [2,3]
>
> I think this should be a noun expression.
I'm uncomfortable with the auto-floor/ceiling, too, though I can't put
my finger on why, since I can't think of a good interpretation of
<noninteger>..<noninteger>.
On the other hand, I don't agree with this either:
> One could readily guess that sqrt(2) .. sqrt(15) is going to be a real interval
The notions of integer sequence and real interval are distinct; after
all, x s.t. 1<=x<=2 is a perfectly good real interval, distinct from
the integer sequence 1..2.
> As a tangential issue, I am interested in the idea that a .. b could
> be a lazy sequence, elements of which are generated on demand.
Yes, though most of the work there is not in defining a lazy sequence,
but making it useful in the various cases which use or should use
lists, e.g. (for i in a..b), map(f, a..b), makelist(expr, x, a..b),
sum(expr, i, a..b). And the defining the rules for when we de-lazify.
For example, assuming that .. is lazy, should (2 .. 3) * (3 .. 4)
also be lazy, or should it evaluate to [6, 12]?
And once we define the lazy form, I'm not sure we need the non-lazy form at all!
-s