2.2.2 Utilisation de fonctions Scheme
Vous pouvez appeler une fonction Scheme pratiquement partout où une
expression Scheme derrière un #
peut prendre place. Vous appelez
une fonction Scheme à partir de LilyPond en faisant précéder son nom
d’un \
, et en le faisant suivre de ses arguments. Lorsqu’un
prédicat d’argument optionnel ne correspond pas à un argument, LilyPond
l’ignore ainsi que tous les arguments optionnels qui suivent, les
remplaçant par leur valeur par défaut, et « sauvegarde » en tant que
prochain argument obligatoire l’argument qui ne correspondait pas. Dans
la mesure où l’argument sauvegardé doit servir, les argument optionnels
ne sont en fait pas considérés comme optionnels, sauf à être suivis d’un
argument obligatoire.
Une exception cependant à cette règle : le fait de donner un
\default
en tant qu’argument optionnel aura pour résultat que cet
argument et tous les autres arguments optionnels qui suivent seront
ignorés et remplacés par leur valeur par défaut. Il en va de même
lorsqu’aucun argument obligatoire ne suit, du fait que \default
ne requiert pas de sauvegarde. C’est d’ailleurs ainsi que fonctionnent
les commandes mark
et key
, qui retrouvent leur
comportement par défaut lorsque vous les faites suivre d’un
\default
.
En plus de là où une expression Scheme est requise, il y a quelques
endroits où des expressions #
sont acceptées et évaluées
uniquement pour leurs effets annexes. Il s’agit, dans la plupart des
cas, d’endroits où une affectation serait tout à fait envisageable.
Dans la mesure où il n’est pas bon de renvoyer une valeur qui pourrait être mal interprétée dans certains contextes, nous vous enjoignons à utiliser des fonctions Scheme normales uniquement dans les cas où vous renvoyez toujours une valeur utile, et une fonction fantôme – voir Fonctions Scheme fantômes – dans le cas contraire.
Pour des raisons de commodité, il est possible de faire appel à des
fonctions Scheme directement en Scheme, courcircuitant ainsi l’analyseur
de LilyPond. Leur nom s’utilise comme n’importe quel nom de fonction.
Le contrôle de typologie des arguments et l’omission des arguments
optionnels seront traîtés de la même manière que lorsque l’appel est
fait à partir de LilyPond, la valeur Scheme *unspecified*
ayant
le rôle du mot réservé \default
pour omettre explicitement les
arguments optionnels.
Autres langues : English, deutsch, español.
About automatic language selection.