Am Sonntag, 6. März 2022, 20:02:21 CET schrieb Luca Fascione: > - Your code "just prepends" a new cell with a key we're interested in > right in front of the old content (with which shares structure) > - It relies on lists being ordered, and all access to alists being a > straight linear scan front-to-back (point being: 'beamed-lengths appears > twice and we use "first one wins" to deal with the repeated key) > - Your way is probably more economical than mine in that mine copies all > entries in the list, while yours just prepends one onto a list that is > otherwise shared > - Your quasiquote segment produces exactly the same output as (append > '(('beamed-lengths . stem-bmlgths)) detls)
@1: Yes, it does. @2: Yes, it does. An a list is simply a list of pairs. Getting the value just scans the list and returns the first match. This is kind of a standard way LISP scopes work, and they easily allow to override symbols within a limited scope. @3: To some extent yes. @4: That is not correct, you’d need (append `((beamed-lengths . ,stem-bmlgths)) detls) for that. But I do not see a good reason to use append for appending a small amount of elements, just cons them together. About collisions: To get proper support you’d need to go into the details of the Beam position calculation and adapt it to incorporate fingerings. But if you look at my solution you can see a way how we can only handle those positions where we actually have a collision between fingering and Beam. Cheers, Valentin
signature.asc
Description: This is a digitally signed message part.