TickDuration deprecation

Timon Gehr timon.gehr at gmx.ch
Wed Nov 22 09:38:54 UTC 2017


On 22.11.2017 03:22, Walter Bright wrote:
> On 11/21/2017 1:40 PM, Timon Gehr wrote:
>>> Computer clocks have discrete ticks, they are not continuous.
>> That may be true, but the plotting library may still just expect a 
>> list of doubles. What's the point of removing the simple conversion 
>> function that was already available for such use cases? This is a 
>> breaking change with zero benefits.
> 
> I'm in general opposed to "kitchen sink" abstractions, preferring 
> pluggable component abstractions.

But this is orthogonal to my complaint. I don't care which Phobos module 
contains the conversion functionality. It can be part of std.conv.to, 
for example.

> Floating point has no business being 
> in a type that is represented as an integral type.

Why would it need to be part of the type? I just want the obvious 
conversion functionality, to enable further processing where this is 
appropriate.

> There are no 0.3 clock ticks, the notion does not exist.
> ...

(Great then. There also is no 0.3 float value. :P)

> 
>>> The behavior maps cleanly onto integral math,
>> I'm not doing computations on times. I could just use Duration for that.
> 
> Time durations are always discrete quanta by the nature of the clock used.
> ...

The plotter or whatever other component consumes the timing data might 
not care about this.

> 
>>> not fuzzy fp math.
>> There is nothing fuzzy about floating point operations,
> 
> Fuzzy as in inexact.

The result is well-defined, it's just rounded. Whether that is exact or 
not depends on what you expected the result to be, it's not properly 
part of the floating point abstraction.

> Integral time computations are always an exact 
> multiple of clock ticks.
> ...

The reason why floating point values are popular is that it is often 
enough infeasible or unnecessary to do the computation without rounding. 
The output of a computation might be inexact even if the inputs are not. 
There needs to be some way to move from one regime to the other.

> 
>> but still, yes, for some use cases, the tiny rounding error will just 
>> not matter.
> 
> Whether the rounding error matters or not should not be decided by the 
> time package, it should be decided by what the user decides to do with 
> the time values.
> 
> I.e. it is not properly part of the time abstraction.
> 

My claim is not that conversion from time to floating point values 
associated with a few natural units is "properly part of the time 
abstraction", just that it should exist. Do you agree with that?


More information about the Digitalmars-d mailing list