Extender LilyPond: A.2.1 Sintaxis del Scheme de LilyPond

### A.2.1 Sintaxis del Scheme de LilyPond

El intérprete Guile forma parte de LilyPond, lo que significa que se puede incluir Scheme dentro de los archivos de entrada de LilyPond. La marca de almohadilla `#` se utiliza para indicar al analizador sintáctico de LilyPond que lo siguiente es un valor de Scheme.

Una vez el analizador sintáctico se encuentra con un símbolo de almohadilla, la entrada se le pasa al intérprete Guile para evaluar la expresión de Scheme. El intérprete continúa procesando la entrada hasta que se encuentra con el final de una expresión de Scheme.

Los procedimientos de Scheme se pueden definir dentro de los archivos de entrada de LilyPond:

>     #(define (average a b c) (/ (+ a b c) 3))

Observe que los comentarios de LilyPond (`%` y `%{ %}`) no se pueden utilizar dentro del código de Scheme, ni siquiera dentro de un archivo de entrada de LilyPond input file, porque es el intérprete Guile, y no el analizador sintáctico de LilyPond, el que está interpretando la expresión de Scheme. Los comentarios en el Scheme de Guile se introducen como sigue:

>     ; esto es un comentario de una línea

>     #!
>       Esto es un comentario de bloque (no anidable) estilo Guile
>       Pero se usan rara vez por parte de los Schemers y nunca dentro del
>       código fuente de LilyPond
>     !#

Durante el resto de esta sección, supondremos que los datos se introducen en un archivo de música, por lo que añadiremos almohadillas `#` al principio de todas las expresiones de Scheme.

Todas las expresiones de Scheme del nivel jerárquico superior dentro de un archivo de entrada de LilyPond se pueden combinar en una sola expresión de Scheme mediante la utilización del operador `begin`:

>     #(begin
>       (define fulanito 0)
>       (define menganito 1))

Otros idiomas: English, deutsch.

#### LilyPond — Extender