[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Iterating music for voiceOne. Checking with equal?
From: |
David Kastrup |
Subject: |
Re: Iterating music for voiceOne. Checking with equal? |
Date: |
Thu, 26 Jul 2018 17:33:03 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
David Kastrup <address@hidden> writes:
> David Kastrup <address@hidden> writes:
>
>> Thomas Morley <address@hidden> writes:
>>
>>> Hi,
>>>
>>> I stumbled across
>>> (equal? #{ \voiceOne #} voiceOne)
>>> returning false.
>>>
>>> Is it expected behaviour?
>>
>> equal? is not implemented all that great for "probs" but Music::equal_p
>> is implemented in a manner where at least
>>
>> #(display (equal? voiceOne (ly:music-deep-copy voiceOne)))
>>
>> would be expected to display #t and it doesn't.
>>
>> Sigh. I'll see what I can find out.
>
> Tracker issue: 5391 (https://sourceforge.net/p/testlilyissues/issues/5391/)
> Rietveld issue: 363740043 (https://codereview.appspot.com/363740043)
> Issue description:
> Prob::equal_p: discard "origin" property Previously elements of
> class Input was considered equal when compared as part of Music
> property lists but this did not take into account that some music
> might store its origin (if any) at different locations in its
> property lists. So we just discard any "origin" property
> completely, regardless of position in the property list and its
> actual value type. Also contains commit: Don't set origin on
> copied music explicitly There would be some mild incentive if the
> origin were accessed an inordinary amount of times (and thus leaving
> it unset would maximize access times to it) but there is no evidence
> for that. One reason might be to ensure greater structural
> similarity between copies of music, but Prob::equal_p has been
> changed to be robust against differences here.
In the mean time, here is a workaround:
voiceOne = \voiceOne
Seriously.
--
David Kastrup