B.2.2 Ús de les funcions de l’Scheme

Les funcions de l’Scheme es poden cridar gairebé des de qualsevol lloc en el qual es pot escriure una expressió de l’Scheme que comenci amb el coixinet #. Cridem a una funció de l’Scheme escrivint el seu nom precedit de la barra invertida \, i seguit pels seus arguments. Un cop que un argument opcional no correspon amb cap argument, el LilyPond se salta aquest argument i tots els que el segueixen, substituint-los pel seu valor per defecte especificat, i ‘recupera’ l’argument que no corresponia al lloc del següent argument obligatori. Atès que l’argument recuperat cal anar a algun lloc, els argument opcionals no es consideren realment opcionals a no ser que vagin seguits d’un argument obligatori.

Hi existeix una excepció: si escrivim \default enlloc d’un argument opcional, aquest argument i tots els arguments opcionals que el segueixen se salten i se substitueixen pels seus valors predeterminats. Això funciona fins i tot si no segueix cap argument obligatori perquè no cal que \default es recuperi. Les instruccionsmark i key fan ús d’aquest ajustament per oferir el seu comportament predeterminat quan van seguides sols per \default.

A part dels llocs on es requereix un valor de l’Scheme hi ha certs llocs en els quals s’accepten expressions de coixinet # i s’avaluen pels seus efectes secundaris, però a part d’això s’ignoren. Són, majorment, els llocs en els quals també seria acceptable posar una assignació.

Atès que no és bona idea retornar valors que puguin malinterpretar-se en algun context, hauríeu de fer servir funcions de l’Scheme normals sols per als casos en els quals sempre es retorna un valor útil, i fer servir funcions de l’Scheme buides see Funcions de l’Scheme buides) en cas contrari.

Per conveniència, les funcions de l’Scheme també es poden cridar directament des de l’Scheme, fent un pont sobre l’analitzador sintàctic del Lilypond. El seu nom pot utilitzar-se com el nom d’una funció corrent. La comprovació de tipus dels arguments i el salt d’arguments opcionals es produeix de la mateixa forma que quan es crida des de dins del LilyPond, agafant el valor de l’Scheme *unspecified* el paper de la paraula reservada \default per saltar explícitament arguments opcionals.


Extender LilyPond v2.25.28 (development-branch).