3.4.3.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 (arg1 arg2…) (type1? type2?…) #{ …musique… #})
où
argN
Le 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’).
La liste des types de prédicat est 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’.