Es geht darum, dass ich beliebig viele Instrumente in einer Liste an eine Funktion geben kann, die für transitive Zitate in alle Richtungen sorgt (siehe
Nachbarthread, ich habe diese Frage aber mal ausgelagert, weil sie womöglich auch für andere Probleme noch interessant ist). Ich habe den kompletten (kompilierbaren und funktionierenden

) Code mal angehängt, der für diese Frage relevante Teil findet sich am Ende der Datei (Z. 174 ff.) und sieht folgendermaßen aus:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define example ; violin & Co. sind ly:music?; add-x ändert bloß ein paar music-properties
`(("violin" . ,(add-abs-time (add-length violin)))
("flute" . ,(add-abs-time (add-length flute)))
("clarinet" . ,(add-abs-time (add-length clarinet)))))
#(define the-list-with-replaced-quotes ; das hier ist dann eine ly:music-list?
(replace-all-in-all example))
#(set! violin (car the-list-with-replaced-quotes))
#(set! flute (cadr the-list-with-replaced-quotes))
#(set! clarinet (caddr the-list-with-replaced-quotes))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Um die alist
example zu bauen, könnte ich
\addQuote neu definieren. Aber danach wärs halt schön, wenn ich nur einmal
\replace-all-in-all schreiben müsste und nicht von Hand
violin & Co. neu definieren müsste. Die Symbole
'violin könnten halt in
example stehen, aber ich habe keinen Weg gefunden, diese Zuweisung zu automatisieren (per
zip und
map define-to-symbol).
Falls das jetzt wiederum zu kompliziert ist, überleg ich mir noch ein einfacheres Beispiel. Aber eigentlich sind die ersten 173 Zeilen Code nicht wirklich relevant für das Verständnis meines Problems, glaub ich

Edit: Hier die Lösung mit abgewandeltem
\addQuote (
(equal? example quotes-alist) ergibt
#t). Das Problem, dass ich danach die Variablen einzeln setzen muss, bleit aber noch.
#(define quotes-alist '())
addQuote =
#(define-void-function (name music) (string? ly:music?)
(set! quotes-alist
(cons
(cons name (add-abs-time (add-length music)))
quotes-alist)))
\addQuote "clarinet" \clarinet
\addQuote "flute" \flute
\addQuote "violin" \violin
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define the-list-with-replaced-quotes
(replace-all-in-all quotes-alist))