On Sun, Jun 5, 2022 at 2:12 PM Jean Abou Samra <j...@abou-samra.fr> wrote:

> As David already said, the part of LilyPond we're discussing is using
> rationals. Furthermore, (a + b) + c being close but not equal to
> a + (b + c) for floats is not really an issue for most parts of LilyPond.
>

Yes, agreed on all points. I'd be surprised this would make a big practical
difference.
The difference is there, but at worst it's one least significant bit per
operation when floats are involved.
It's tiny in practice.


> "a + (b + c) is close but not equal to "(a + b) + c" is different
> from "a + (b + c)" works whereas "(a + b) + c" errors out (in Scheme)
> or doesn't compile (in C++)".
>

Agreed. Although in this case you'd have a being a Moment and b and c being
spans, so either association would be correct
(and identical in value given they're rationals). But yes, yes of course,
in general.


> From what I've heard, GOOPS used to be inefficient at dispatching
> virtual calls. This problem is apparently gone now.
>

Right.


> Boxing and unboxing has a certain cost, but LilyPond is not optimized
> to the point that thinking about it causes significant savings. The
> order of the most worthy optimizations is more high-level.
>

Yes, that'd be my expectation too.

I think we all agree that these are good things in
> any software projects. The question is whether a
> given change will contribute enough to these goals
> to be worth it compared to its costs and downsides.
>

Absolutely.

L


-- 
Luca Fascione

Reply via email to