Urs Liska <[email protected]> writes:

> Hi,
>
> I have a hard time to understand the difference between # and $ in
> LilyPond code blocks within Scheme functions.

Same as elsewhere.  Please read

<URL:http://lilypond.org/doc/v2.19/Documentation/extending/lilypond-scheme-syntax>

> 2.2.1 of the Extending manual says:
> "Within LilyPond code blocks, use # to reference function arguments
> (eg., ‘#arg1’) or to start an inline Scheme expression containing
> function arguments (eg., ‘#(cons arg1 arg2)’). Where normal Scheme
> expressions using # don’t do the trick, you might need to revert to
> immediate Scheme expressions using $, for example as ‘$music’."
>
> This doesn't really help.
>
> 2.1. says:
> "... can deal with embedded Scheme expressions starting with $ and #."
>
> This is even less helpful.
>
> Please give me a meaningful explanation of what "immediate Scheme
> expressions" are and when and why you should use them.

Those starting with $.  You use them if you need either the copying
action (like when a music expression is used more than once), or when
the parser will not accept an expression starting with # because the
syntax rules will only apply to certain types, requiring the type to be
determined by the lexer already.

-- 
David Kastrup

_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to