Eliminate numeric-range over inexact numbers? John Cowan (27 Aug 2020 23:05 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (28 Aug 2020 02:12 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (28 Aug 2020 03:33 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (28 Aug 2020 06:31 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (28 Aug 2020 16:01 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (28 Aug 2020 16:28 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (28 Aug 2020 16:59 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (28 Aug 2020 17:03 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (28 Aug 2020 18:10 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (28 Aug 2020 18:54 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (29 Aug 2020 17:29 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (29 Aug 2020 17:44 UTC)
Re: Eliminate numeric-range over inexact numbers? John Cowan (30 Aug 2020 00:12 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (30 Aug 2020 08:54 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (30 Aug 2020 17:02 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (30 Aug 2020 17:39 UTC)
Re: Eliminate numeric-range over inexact numbers? John Cowan (30 Aug 2020 18:21 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (30 Aug 2020 18:46 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (30 Aug 2020 19:30 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (30 Aug 2020 20:40 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (30 Aug 2020 20:44 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (30 Aug 2020 20:56 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (30 Aug 2020 21:07 UTC)
Re: Eliminate numeric-range over inexact numbers? John Cowan (30 Aug 2020 21:08 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (31 Aug 2020 02:40 UTC)
Re: Eliminate numeric-range over inexact numbers? John Cowan (31 Aug 2020 12:50 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (31 Aug 2020 16:30 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (30 Aug 2020 21:08 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (30 Aug 2020 21:15 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (30 Aug 2020 21:29 UTC)
Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe (28 Aug 2020 18:13 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (28 Aug 2020 18:55 UTC)
Re: Eliminate numeric-range over inexact numbers? John Cowan (28 Aug 2020 20:45 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (28 Aug 2020 21:11 UTC)
Re: Eliminate numeric-range over inexact numbers? John Cowan (29 Aug 2020 00:43 UTC)
Re: Eliminate numeric-range over inexact numbers? Marc Nieper-Wißkirchen (29 Aug 2020 08:21 UTC)

Re: Eliminate numeric-range over inexact numbers? Wolfgang Corcoran-Mathe 28 Aug 2020 16:01 UTC

On 2020-08-28 08:30 +0200, Marc Nieper-Wißkirchen wrote:
> Removing inexact numeric ranges would be throwing out the baby with the
> bathwater. (And they are useful, e.g. in conjunction with fold when you
> want to sum some progression.)

Agreed.

> (1) Replace "lower-bound" with "start-index" (which is always exact just
> shifts the indexer). This makes the current constraint unnecessary, so even
> all user-provided indexers will work. This will work smoothly.

This seems like a very good idea.  If I understand correctly, though,
from an implementation perspective, we would still need to store a lower
bound.  For example,

    (define r (numeric-range 5 10))

    (range-start-index r)  ; => 0
    (range-lower-bound r)  ; => 5

(The range-lower-bound accessor may not exists, of course.)  Then:

    (define r* (range-drop r 2))

    (range-start-index r*)  ; => 2
    (range-lower-bound r*)  ; => 5

In both cases the indexer is

    (lambda (start-index n)
      (+ lower-bound (* (+ n start-index) step))).

Thus, we never need to compose indexers, we don't introduce round-off
errors by adjusting lower bounds, and it only costs us the additional
start-index field.

I'd like to examine the SRFI further to see if there are any further
consequences of this change, but it seems like the optimal solution to
me.  Many thanks for coming up with this, Marc.

--
Wolfgang Corcoran-Mathe  <xxxxxx@sigwinch.xyz>

"Simplicity does not precede complexity, but follows it."
--Alan J. Perlis