5.6.1 Syntaxe d’une fonction de substitution
La rédaction d’une fonction chargée de substituer du code LilyPond à une variable est chose relativement aisée. Une telle fonction est de la forme
fonction = #(define-music-function (parser location arg1 arg2…) (type1? type2?…) #{ …musique… #})
où
argN | nième argument. |
typeN? | un type de prédicat Scheme pour lequel argN
doit renvoyer #t . |
…musique… | du code LilyPond tout ce qu’il y a de plus ordinaire, avec des
$ (là où seule une construction LilyPond est autorisée) et des
# (lorsqu’il s’agit d’une valeur en Scheme, d’un argument de
fonction musicale ou de musique faisant partie d’une liste) pour
référencer les arguments (par ex. ‘#arg1’). |
Les arguments parser
et location
sont obligatoires ;
ils sont utilisés dans certaines situations évoluées, comme indiqué dans
le manuel d’extension des fonctionnalités à au chapitre
Fonctions musicales. Assurez-vous bien de ne pas les omettre
dans vos fonctions de substitution.
La liste des types de prédicat est elle aussi obligatoire. Voici quelques uns des types de prédicat les plus utilisés dans les fonctions musicales :
boolean? cheap-list? (au lieu de « list? », pour accélérer le traitement) ly:duration? ly:music? ly:pitch? markup? number? pair? string? symbol?
Une liste plus fournie est disponible à l’annexe Types de prédicats prédéfinis. Vous pouvez par ailleurs définir vos propres types de prédicat.
Voir aussi
Manuel de notation : Types de prédicats prédéfinis.
Manuel d’extension : Fonctions musicales.
Fichiers d’initialisation : ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.
Autres langues : English, deutsch, español, italiano, 日本語.
About automatic language selection.