@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond-learning.tely
@ignore
- Translation of GIT committish: 442e889ce5bd4f250270b992a1b105ed7fc078db
+ Translation of GIT committish: 45945bd973aa9161b10e3f517902afb7ef4b4a56
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
+@c \version "2.12.0"
+
@node Scheme tutorial
@appendix Scheme tutorial
quiere saber más sobre Scheme, consulte
@uref{http://@/www@/.schemers@/.org}.
-Lo más básico de un lenguaje son los datos: números, cadenas de
-caracteres, listas, etc. He aquí una lista de los tipos de datos que
-son de relevancia respecto de la entrada de LilyPond.
+LilyPond utiliza la implementación GNU Guile de Scheme, que está
+basada en el estándar @qq{R5RS} del lenguaje. Si está aprendiendo
+Scheme para usarlo con LilyPond, no se recomienda trabajar con una
+implementación distinta (o que se refiera a un estándar diferente).
+Hay información sobre Guile en
+@uref{http://www.gnu.org/software/guile/}. El estándar de Scheme
+@qq{R5RS} se encuentra en
+@uref{http://www.schemers.org/Documents/Standards/R5RS/}.
+
+La instalación de LilyPond inclute también la de la implementación
+Guile de Scheme. Sobre casi todos los sistemas puede experimentar en
+una @qq{caja de arena} de Scheme abriendo una ventana del terminal y
+tecleando @q{guile}. En algunos sistemas, sobre todo en Windows,
+podría necesitar ajustar la variable de entorno @code{GUILE_LOAD_PATH}
+a la carpeta @code{../usr/shr/guile/1.8} dentro de la instalación de
+LilyPond (para conocer la ruta completa a esta carpeta, consulte
+@ref{Other sources of information}). Como alternativa, los usuarios
+de Windows pueden seleccionar simplemente @q{Ejecutar} del menú Inicio
+e introducir @q{guile}.
+
+El concepto más básico de un lenguaje son sus tipos de datos: números,
+cadenas de caracteres, listas, etc. He aquí una lista de los tipos de
+datos que son de relevancia respecto de la entrada de LilyPond.
@table @asis
@item Booleanos
En un archivo de música, los fragmentos de código de Scheme se
-esecriben con el signo de almohadilla @code{#}. Así, los ejemplos
+escriben con el signo de almohadilla @code{#}. Así, los ejemplos
anteriores traducidos a LilyPond son:
@example
una cadena"
@end example
+Observe que los comentarios de LilyPond (@code{%} y @code{%@{ %@}}) no
+se puedden utilizar dentro del código de Scheme. Los comentarios en
+el Scheme de Guile se introducen como sigue:
+
+@example
+; 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
+!#
+@end example
+
+Se pueden combinar en un mismo archivo de música varias expresiones de
+Scheme consecutivas mediante la utilización del operador @code{begin}.
+Ello permite que el número de marcas de cuadradillo se redizca a una.
+
+@example
+#(begin
+ (define fulanito 0)
+ (define menganito 1))
+@end example
+
+Si el @code{#} va seguido de un paréntesis de apertura, @code{(}, como
+en el ejemplo anterior, el analizador sintáctico permanece dentro del
+modo de Scheme hasta que encuentra el paréntesis de cierre
+correspondiente, @code{)}, por lo que no son necesarios más símbolos
+de @code{#} para introducir una sección de Scheme.
+
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
@code{#} en todas partes.
@funindex #'symbol
@cindex comillas en Scheme
-El apóstrofe @code{'} evita que el intérprete de Scheme sustituya
+El apóstrofo @code{'} evita que el intérprete de Scheme sustituya
@code{veintiCuatro} por @code{24}. En vez de esto, obtenemos el
nombre @code{veintiCuatro}.
\override Stem #'thickness = #2.6
@end example
-Esta isntrucción ajusta el aspecto de las plicas. El valor @code{2.6}
+Esta instrucción ajusta el aspecto de las plicas. El valor @code{2.6}
se pone dentro de la variable @code{thickness} de un objeto
@code{Stem}. @code{thickness} se mide a partir del grosor de las
líneas del pentagrama, y así estas plicas serán @code{2.6} veces el
grosor de las líneas del pentagrama. Esto hace que las plicas sean
-casi el doble de gruesas de lo normal. Para distinguir entr las
+casi el doble de gruesas de lo normal. Para distinguir entre las
variables que se definen en los archivos de entrada (como
@code{veintiCuatro} en el ejemplo anterior) y las variables de los
objetos internos, llamaremos a las últimas @q{propiedades} y a las
derecho) se introducen como @code{parejas}. Una pareja@footnote{En la
terminología de Scheme, la pareja se llama @code{cons}, y sus dos
elementos se llaman @code{car} y @code{cdr} respectivamente.} se
-introduce como @code{(first . second)} y, como los símbolos, se deben
-preceder de un apóstrofe,
+introduce como @code{(primero . segundo)} y, como los símbolos, se deben
+preceder de un apóstrofo:
@example
\override TextScript #'extra-offset = #'(1 . 2)
Esto asigna la pareja (1, 2) a la propiedad @code{extra-offset} del
objeto TextScript. Estos números se miden en espacios de pentagrama,
y así esta instrucción mueve el objeto un espacio de pentagrama a la
-derecha, y dos especios hacia arriba.
+derecha, y dos espacios hacia arriba.
Los dos elementos de una pareja pueden ser valores arbitrarios, por
ejemplo
@end example
Una lista se escribe encerrando sus elementos entre paréntesis, y
-añadiendo un apóstrofe. Por ejemplo,
+añadiendo un apóstrofo. Por ejemplo,
@example
#'(1 2 3)
números 1 y@tie{}2). Normalmente, las listas se interpretan como
cálculos, y el intérprete de Scheme sustituye el resultado del
cálculo. Para escribir una lista, detenemos la evaluación. Esto se
-hace precediendo la lista por un apóstrofe @code{'}. Así, para los
-cálculos no usamos ningún apóstrofe.
+hace precediendo la lista por un apóstrofo @code{'}. Así, para los
+cálculos no usamos ningún apóstrofo.
-Dentro de una lista o pareja precedida de apóstrofe, no hay necesidad
-de escribir ningún apóstrofe más. Lo siguiente es una pareja de
+Dentro de una lista o pareja precedida de apóstrofo, no hay necesidad
+de escribir ningún apóstrofo más. Lo siguiente es una pareja de
símbolos, una lista de símbolos y una lista de listas respectivamente:
@example
@menu
-* Tweaking with Scheme::
+* Tweaking with Scheme::
@end menu
@node Tweaking with Scheme
profundamente usando instrucciones como @code{\override TextScript
#'extra-offset = ( 1 . -1)}. Pero tenemos incluso mucho más poder si
utilizamos Scheme. Para ver una explicación completa de esto,
-consulteel @ref{Scheme tutorial}, y @ruser{Interfaces for
+consulte el @ref{Scheme tutorial}, y @ruser{Interfaces for
programmers}.
Podemos usar Scheme simplemente para sobreescribir instrucciones con
@c It is - 'padding still works
@lilypond[quote,verbatim,ragged-right]
-tempoMark = #(define-music-function (parser location padding marktext)
- (number? string?)
+tempoPadded = #(define-music-function (parser location padding tempotext)
+ (number? string?)
#{
- \once \override Score . RehearsalMark #'padding = $padding
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup { \bold $marktext }
+ \once \override Score.MetronomeMark #'padding = $padding
+ \tempo \markup { \bold $tempotext }
#})
\relative c'' {
- c2 e
- \tempoMark #3.0 #"Allegro"
- g c
+ \tempo \markup { "Low tempo" }
+ c4 d e f g1
+ \tempoPadded #4.0 #"High tempo"
+ g4 f e d c1
}
@end lilypond