X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fscheme-tutorial.itely;h=1655535cb548ce14506b0a6c1433d40d82e2329f;hb=64b75cc6dafef223103330056eeedf5b8077e630;hp=6d9d9c3cd44a6cd616711625dc76e4b4bb1b37ce;hpb=72c2e6dbd433fe82466020e75f1f631d3a7e96cb;p=lilypond.git diff --git a/Documentation/user/scheme-tutorial.itely b/Documentation/user/scheme-tutorial.itely index 6d9d9c3cd4..1655535cb5 100644 --- a/Documentation/user/scheme-tutorial.itely +++ b/Documentation/user/scheme-tutorial.itely @@ -1,9 +1,16 @@ +@c -*- coding: utf-8; mode: texinfo; -*- +@c This file is part of lilypond.tely +@ignore + Translation of GIT committish: FILL-IN-HEAD-COMMITTISH + When revising a translation, copy the HEAD committish of the + version that you are working on. See TRANSLATION for details. +@end ignore @node Scheme tutorial @appendix Scheme tutorial -@cindex @code{#} +@funindex # @cindex Scheme @cindex GUILE @cindex Scheme, in-line code @@ -14,8 +21,8 @@ LilyPond uses the Scheme programming language, both as part of the input syntax, and as internal mechanism to glue modules of the program together. This section is a very brief overview of entering data in -Scheme.@footnote{If you want to know more about Scheme, see -@uref{http://@/www@/.schemers@/.org}.} +Scheme. If you want to know more about Scheme, see +@uref{http://@/www@/.schemers@/.org}. The most basic thing of a language is data: numbers, character strings, lists, etc. Here is a list of data types that are relevant to @@ -25,13 +32,13 @@ LilyPond input. @item Booleans Boolean values are True or False. The Scheme for True is @code{#t} and False is @code{#f}. -@cindex @code{##t} -@cindex @code{##f} +@funindex ##t +@funindex ##f @item Numbers Numbers are entered in the standard fashion, @code{1} is the (integer) number one, while @code{-1.5} is a -floating point number (a non-integer number). +floating point number (a non-integer number). @item Strings Strings are enclosed in double quotes, @@ -64,7 +71,7 @@ In a music file, snippets of Scheme code are introduced with the hash mark @code{#}. So, the previous examples translated in LilyPond are @example -##t ##f +##t ##f #1 #-1.5 #"this is a string" #"this @@ -81,7 +88,7 @@ traditional @math{1+2}. @lisp #(+ 1 2) - @result{} #3 + @result{} #3 @end lisp The arrow @result{} shows that the result of evaluating @code{(+ 1 2)} @@ -90,31 +97,31 @@ be used for another calculation. @lisp #(+ 1 (* 3 4)) - @result{} #(+ 1 12) + @result{} #(+ 1 12) @result{} #13 @end lisp These calculations are examples of evaluations; an expression like @code{(* 3 4)} is replaced by its value @code{12}. A similar thing -happens with variables. After defining a variable +happens with variables. After defining a variable @example -twelve = #12 +twelve = #12 @end example @noindent variables can also be used in expressions, here @example -twentyFour = #(* 2 twelve) -@end example +twentyFour = #(* 2 twelve) +@end example @noindent the number 24 is stored in the variable @code{twentyFour}. The same assignment can be done in completely in Scheme as well, @example -#(define twentyFour (* 2 twelve) +#(define twentyFour (* 2 twelve)) @end example The @emph{name} of a variable is also an expression, similar to a @@ -124,7 +131,7 @@ number or a string. It is entered as #'twentyFour @end example -@cindex @code{#'symbol} +@funindex #'symbol @cindex quoting in Scheme The quote mark @code{'} prevents the Scheme interpreter from substituting @@ -146,12 +153,12 @@ staff lines, so these stem lines will be @code{2.6} times the width of staff lines. This makes stems almost twice as thick as their normal size. To distinguish between variables defined in input files (like @code{twentyFour} in the example above) and variables of internal -objects, we will call the latter ``properties'' and the former -``identifiers.'' So, the stem object has a @code{thickness} property, +objects, we will call the latter @q{properties} and the former +@q{identifiers.} So, the stem object has a @code{thickness} property, while @code{twentyFour} is an identifier. @cindex properties vs. identifiers -@cindex identifiers vs. properties +@cindex identifiers vs. properties Two-dimensional offsets (X and Y coordinates) as well as object sizes (intervals with a left and right point) are entered as @code{pairs}. A @@ -160,8 +167,8 @@ and its two elements are called @code{car} and @code{cdr} respectively.} is entered as @code{(first . second)} and, like symbols, they must be quoted, @example -\override TextScript #'extra-offset = #'(1 . 2) -@end example +\override TextScript #'extra-offset = #'(1 . 2) +@end example This assigns the pair (1, 2) to the @code{extra-offset} property of the TextScript object. These numbers are measured in staff-spaces, so @@ -199,3 +206,6 @@ respectively, #'(staff clef key-signature) #'((1) (2)) @end example + + +