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

Reply via email to