On 14 March 2018 at 10:13, David Kastrup <d...@gnu.org> wrote: > Gianmaria Lari <gianmarial...@gmail.com> writes: > > > On 12 March 2018 at 10:06, Gianmaria Lari <gianmarial...@gmail.com> > wrote: > > > >> > >> > >> On 12 March 2018 at 09:25, David Kastrup <d...@gnu.org> wrote: > >>> > >>> From the "Extending LilyPond" guide: > >>> > >>> 1.2.1 LilyPond Scheme syntax > >>> ---------------------------- > >>> > >>> The Guile interpreter is part of LilyPond, which means that Scheme can > >>> be included in LilyPond input files. There are several methods for > >>> including Scheme in LilyPond. > >>> > >>> The simplest way is to use a hash mark ‘#’ before a Scheme > >>> expression. > >>> > >>> Now LilyPond’s input is structured into tokens and expressions, much > >>> like human language is structured into words and sentences. LilyPond > >>> has a lexer that recognizes tokens (literal numbers, strings, Scheme > >>> > >> [....] > >> > >> Ok David, I think it's clear. Thanks a lot for the very detailed > >> explanation, I appreciated your help. > > > > David, in a musical expression the scheme expression #(.....) must > return a > > musical expression. That's ok. > > > > In case of I'm not inside a musical expression, does lilypond expect > that the > > scheme expression #(.....) return something compatible with what "is on > > the left"? > > For example in this (working) code, on the left we have "piece" that > needs > > a string on the right. So, on the right the scheme expression have to > > return a string to have working code. Is my comprehension correct? > > > > \version "2.19.81" > > \score { \header { piece = #(number->string 123) } \fixed c' { a a a a} } > > I don't think that the type of assignments in header blocks and similar > is being checked. But the later use of "piece" will require something > compatible with a "markup" which a plain quoted string is. > > The difference between # and $ is mostly that # does not convey any > syntactical information to the parser and thus can be left unevaluated > until actually used in some expression. $ produces a type relevant to > parsing, so you might get surprising "premature" evaluations when the > respective token is needed as a lookahead token for determining the > syntax. > > In situations like assignments, the syntactic role of # is clear so > using $ is rarely called for. > > -- > David Kastrup >
ok, thank you David! g.
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user