2.2.2 Benutzung von Scheme-Funktionen
Scheme-Funktionen können überall aufgerufen werden, wo ein
Scheme-Ausdruck beginnend mit #
geschrieben werden kann.
Man kann eine Scheme-Funktion aufrufen, indem man ihrer Bezeichnung
\
voranstellt und Argumente hinten anfügt. Wenn ein optionales
Argumentenprädikat nicht mit einem Argument übereinstimmt, lässt
LilyPond dieses und alle folgenden Argumente aus und ersetzt sie
durch ihre Standardwerte und „speichert“ das Argument, das nicht
gepasst hat, bis zum nächsten zwingenden Argument. Da das gespeicherte
Argument auch noch irgendwo untergebracht werden muss, werden
optionale Argumente nicht wirklich als optional angesehen, es sei denn,
sie werden von einem zwingenden Argument gefolgt.
Es gibt eine Ausnahme: Wenn man \default
anstelle eines optionalen
Arguments schreibt, wird dieses und alle folgenden Argumente ausgelassen
und durch ihre Standardwerte ersetzt. Das funktioniert auch, wenn kein
zwingendes Argument folgt, weil \default
nicht gespeichert werden
muss. Die Befehle mark
und key
benützten diesen Trick,
um ihr Standardverhalten zur verfügung zu stellen, wenn sie
\default
nachgestellt haben.
Abgesehen von Stellen, wo ein Scheme-Wert benötigt ist, gibt es
wenige Stellen, wo #
-Ausdrücke zwar für ihre (Neben-)Wirkung
akzeptiert und ausgewertet, aber ansonsten ignoriert werden. Meistens
handelt es sich dabei um Stellen, wo eine Zuweisung auch in Ordnung
wäre.
Weil es eine schlechte Idee ist, einen Wert auszugeben, der in einigen Kontexten misinterpretiert werden könnte, sollte man Scheme-Funktionen nur in den Fällen benutzen, in welchen sie immer einen sinnvollen Wert ausgeben, und leere Scheme-Funktionen an anderen stellen einsetzen. Siehe auch siehe Leere Scheme-Funktionen.