HaloO,

Larry Wall wrote:
> Well, maybe 0 .. 10-ε or some such.

This ε there is what I have as the .step method of nums
in the thread "The Inf type". That is $min..^$max is the
same as $min..($max-$max.step). For Ints the .step is
always 1. For Nums it depends on the number, that is the
spacing of Nums is non-uniform but discrete like Ints.
That is what I call non-uniform Ints in contrast to Rats
which are dense and their operations ++ and -- are undefined
unless one wants to jump through the diagonalized Rats
with skipped duplicates: 1++ -> 1/2, 1/2++ -> 1/3, 1/3++
-> 2/3, 2/3++ -> 1/4, 1/4++ -> 3/4, etc.

So, does it make sense to define ++ and -- for nums as
$x++ meaning $x += $x.step? Or should these operators
floor the value to an Int and step the result?

   my $x = 3.14;
   $x++;
   say $x; # num 4.14 or int 4?

   $x = 3.14159265358979323846e20;
   $x++;
   say $x; # int 314159265358979323847
           # or int 314159265358979300001
           # or num 3.141592653589794e20 for 64bit float?

The last two options above are because $x.step == 1e5.
The exact value would need a float with 22 digits mantissa,
i.e. a quad precision.

Regards, TSa.
-- 

"The unavoidable price of reliability is simplicity" -- C.A.R. Hoare
"Simplicity does not precede complexity, but follows it." -- A.J. Perlis
1 + 2 + 3 + 4 + ... = -1/12  -- Srinivasa Ramanujan

Reply via email to