Harald Christiansen <haraldch...@gmail.com> writes: > Hello, > > Is there a manual for the lilypond language itself ? > > I don't get it ... is it a programming language ... a macro expander ... > all of the above ?
It is a dynamically typed language. Not much programming in the language itself, but a Scheme layer caters for that and provides all the types. The command line processes an input file, and certain things like top-level music or scores cause actions. > I cannot build a mental model of how it works. > > For example, let's take variables. I take the notation reference, I look > at the index and I see several entries. > > One entry specifies: > > 3.1.5 File structure > [...] > > A variable, such as > > foo = { c4 d e d } > > So far so good. > > Another entry: > > 3.3.2 Different editions from one source > [...] > Using variables > > allLyrics = \lyricmode {King of glo -- ry } > > Is this just a macro substitution ? No. Neither is the above. Both place a sequential music structure into the respective variables. Use \void \displayMusic \allLyrics \void \displayMusic \foo to see what's in there. > But then in one of my own I have to declare > > myLayout = \layout { <bla bla bla } > > even if \myLayout is used inside of a \layout section Because \layout { ... } is not a music expression but rather an output definition. Different type. > So it seems that there is more going on but what ? Are the variables > typed ? (i.e. myLayout is of type \layout and I have to cast it or > declare it ? I don't get it) There are no typed variables. Types are associated with expressions rather than variables: that's what using a dynamically typed language like Scheme is about. So there is no point in declaring a variable. Its type is determined by what you place in there. > I understand that at some level underneath lilypond uses Scheme > (Guile) but how specifically ? > > e.g. > \set Staff.printPartCombineTexts = ##f > > The way I guess this is: '#f' is the false atom, the first # switches > to Guile interpretation ... but beyond this all is completely foggy. Check out the red manual. <URL:http://lilypond.org/doc/v2.19/Documentation/extending/scheme-in-lilypond> -- David Kastrup _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user