Verwendet noch jemand eine niedrigere Version als 2.18?
Kommt gelegentlich vor. Es ist nicht lange her da kam jemand mit 2.6. daher, iirc (auf der internationalen mailing-list).
Wichtiger sind aber zwei andere Dinge.
(1)
Momentan ist 2.18.2 zwar die aktuelle stable, aber eigentlich völlig outdated verglichen mit den neueren devel-Versionen. 2.19.x hat aber so viele Änderungen, daß 2.18.-code dort manchmal nicht funktioniert, bzw einen anderen output liefert (und umgekehrt).
(2)
Falls jemand nach Jahren diesen thread nachliest, sollte er/sie direkt sehen können auf welche lily-Version bezug genommen wurde.
Falls wir Dir beim lernen von scheme, genauer: diesem Kuddelmuddel aus guile und LilyPond-syntax, helfen können, dann machen wir das natürlich sehr gerne.
Ich empfehle allerdings konkretere Fragen als:
Was genau passiert da?

Deine Frage nach
ly:music-property ist konkreter. Insoweit:
ly:music-property gibt den "Wert" des spezifizierten properties (gegeben als symbol, z.B. 'name) der gegebenen
music expression zurück.
Falls nix zu finden ist eine leere Liste, doch falls das optionale
val zusätzlich angegeben wurde, dann wird dieses dann retourniert.
Allerdings kann ich mich nicht erinnern jemals ein default-value für ly:music-property gebraucht zu haben, wohl aber bei grob-properties.
Wenn noch unklar, frag
(ly:music? e) testet, ob
e die Bedingungen erfüllt um #t bei der Abfrage durch ly:music? zu ergeben.
Aber was alles #t ist mag Überraschungen bergen:
#(write-me "(ly:music? #{ -3 #}) " (ly:music? #{ -3 #}))
-3 ist in LilyPond ein 'FingeringEvent !
Gruß,
Harm