Dan Eble <dan@lyric.works> writes: > On Jun 3, 2022, at 11:48, David Kastrup <d...@gnu.org> wrote: >> >> Programming languages don't offer different types for distances, >> positions, weights, forces, whatnot. When I equate various amounts of > > Bringing the conversation back to a Moment versus the delta between > two Moments, C++11 has std::chrono::time_point and > std::chrono::duration. I have used these and found them very helpful > for catching mistakes such as adding two time_points together.
It's only a "mistake" if you hate things like associativity, want to prohibit evaluating A+(B-C) as (A+B)-C and insist every intermediate arithmetic result has to carry a physical meaning. The whole point of Algebra is to separate operations and meaning. Not being allowed to work with simple group operations because they do not pass some physics-based purity test is not really helping. I am not proposing replacing moments and their grace time with complex rationals. But they would make for a convenient underlying implementation. Even if complex multiplication would be quite pointless. I think there is a point for making straightforward rationals the representation for non-grace Moments that can turn into a Moment by adding a grace part. That aspect of complex rationals as an extension of real rationals maps to what we'd want from Moment math. Then adding constraints like "but you must not add two rationals" are not, well, rational. -- David Kastrup