From 9ef49129e68ce6f735d4e571a346427a9295b83f Mon Sep 17 00:00:00 2001 From: Francisco Vila <francisco.vila@hispalinux.es> Date: Fri, 13 Jul 2012 17:32:48 +0200 Subject: [PATCH] Doc-es: update Scheme tutorial. --- .../es/extending/scheme-tutorial.itely | 52 +++++++++++++++---- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/Documentation/es/extending/scheme-tutorial.itely b/Documentation/es/extending/scheme-tutorial.itely index 34940eb76f..f6bee3158b 100644 --- a/Documentation/es/extending/scheme-tutorial.itely +++ b/Documentation/es/extending/scheme-tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 4ab6e4df934e57c51dbbdbf2c209273c6cb5b888 + Translation of GIT committish: 6e765bb786fddd2e655315f9bde94968952b99ca When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -643,6 +643,7 @@ guile> (cond ((< a b) "a es menor que b") * Sintaxis del Scheme de LilyPond:: * Variables de LilyPond:: * Variables de entrada y Scheme:: +* Importing Scheme in LilyPond:: * Propiedades de los objetos:: * Variables de LilyPond compuestas:: * Representación interna de la música:: @@ -701,7 +702,7 @@ no se pasa nada en absoluto al analizador sintáctico. Ãste es, de hecho, el mismo mecanismo exactamente que LilyPond emplea cuando llamamos a cualquier variable o función musical por su nombre, -como @code{\nombre}, con la única diferencia de que su final viene +como @code{\nombre}, con la única diferencia de que el nombre viene determinado por el analizador léxico de LilyPond sin consultar al lector de Scheme, y asà solamente se aceptan los nombres de variable consistentes con el modo actual de LilyPond. @@ -711,6 +712,12 @@ sorpresa, véase @ref{Variables de entrada y Scheme}. La utilización de @code{#} donde el analizador sintáctico lo contempla es normalmente preferible. +@funindex $@@ +@funindex #@@ +También existen los operadores de @q{división de listas} @code{$@@} y +@code{#@@} que insertan todos los elementos de una lista dentro del +contexto circundante. + Ahora echemos un vistazo a algo de código de Scheme real. Los procedimientos de Scheme se pueden definir dentro de los archivos de entrada de LilyPond: @@ -849,7 +856,7 @@ traLaLa = { c'4 d'4 } #(define twice (make-sequential-music newLa)) -{ \twice } +\twice @end lilypond @c Due to parser lookahead @@ -862,6 +869,12 @@ que necesita comprobar lo que viene a continuación. Lee el sÃmbolo forma que puede proceder a la asignación, y @emph{posteriormente} ejecutar el código de Scheme sin problema. +@node Importación de Scheme dentro de LilyPond +@subsection Importación de Scheme dentro de LilyPond +@translationof Importing Scheme in LilyPond +@funindex $ +@funindex # + El ejemplo anterior muestra cómo @q{exportar} expresiones musicales desde la entrada al intérprete de Scheme. Lo contrario también es posible. Colocándolo después de @code{$}, un valor de Scheme se @@ -871,7 +884,7 @@ podrÃa también haberse escrito como @example ... -@{ $(make-sequential-music (list newLa)) @} +$(make-sequential-music newLa) @end example Podemos utilizar @code{$} con una expresión de Scheme en cualquier @@ -887,11 +900,32 @@ habrÃa fracasado porque @code{traLaLa} no habrÃa sido definida aún. Para ver una explicación de este problema de momento temporal, véase @ref{Sintaxis del Scheme de LilyPond}. -En cualquier caso, la evaluación del código de Scheme se produce -dentro del analizador sintáctico como muy tarde. Si necesitamos que -se ejecute en un punto temporal más tardÃo, -usarÃamos @ref{Funciones de Scheme vacÃas}, o lo almacenarÃamos en un -macro: +@funindex $@@ +@funindex #@@ +Un conveniente aspecto posterior pueden ser los operadores de +@q{división de listas} @code{$@@} y @code{#@@} para la inserción de +los elementos de una lista dentro del contexto circundante. +Utilizándolos, la última parte del ejemplo se podrÃa haber escrito +como + +@example +... +@{ $@@newLa @} +@end example + +AquÃ, cada elemento de la lista que está almacenado en @code{newLa} se +toma en secuencia y se inserta en la lista, como si hubiésemos escrito + +@example +@{ $(first newLa) $(second newLa) @} +@end example + +Ahora bien, en todas esas formas, el código de Scheme se evalúa en el +momento en que el código de entrada aún se está procesando, ya sea en +el analizador léxico o en el analizador sintáctico. Si necesitamos +que se ejecute en un momento posterior, debemos consultar +@ref{Funciones de Scheme vacÃas}, o almacenarlo dentro de un +procedimiento: @example #(define (nopc) -- 2.39.5