Urs Liska <address@hidden> 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.