[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Scheme question on strict substitution
From: |
stk |
Subject: |
Re: Scheme question on strict substitution |
Date: |
Thu, 30 Nov 2006 03:09:58 -0500 (EST) |
Hello,
> It may help your understanding to know
> that \tweak itself is implemented as a music function taking 3 arguments.
> The syntax of \tweak is
> \tweak symbol value music_expression
OK, thank you, that's very clear. That fact, for any given keyword,
would tell a user immediately whether (s)he could just write a macro or
would be forced to define a function for some expression involving the
keyword.
Is the information
(1) number of arguments
or preferably
(2) the syntax
documented explicitly anywhere for all keywords?
I don't write to this list much, but I would like to thank you for the
concise and clear answers you have provided to so many questions.
-- Tom
------------------------------------------------------------
On Thu, 30 Nov 2006, Mats Bengtsson wrote:
>
>
> address@hidden wrote:
> > Hello,
> >
> >
> >>> Does it work just to define this macro at the top level
> >>>
> >>> fraction = \tweak #'text #tuplet-number::calc-fraction-text
> >>>
> >
> >
> >> No, this doesn't work.
> >>
> >
> > OK, but I have a question. It is common to write such things as
> >
> > push = \once \override NoteColumn #'extra-X-extent = #'(0 . 2)
> >
> > and then later to use \push before a note in the music.
> > However the above definition of fraction doesn't yield a valid
> > \fraction macro call, as you pointed out.
> >
> > Is there any clear criterion for knowing in advance whether a given
> > expression for a macro definition will actually work?
> >
> >
> The syntax of \tweak is
> \tweak symbol value music_expression
> where music_expression is the music expression you want the tweak to
> apply to. You can only define a macro for a complete syntactical expression
> (I know that this is a somewhat vague definition), whereas you tried to
> define a macro for only half of it. It may help your understanding to know
> that \tweak itself is implemented as a music function taking 3 arguments.
> > What I get out of your function definition of fraction (below) is that
> > \fraction is intrinsically a function that has to be followed by a music
> > argument. But even though
> >
> > \once \override NoteColumn #'extra-X-extent = #'(0 . 2)
> >
> > would have to be followed by a note to make any sense, that doesn't
> > seem to make it a function-with-one-argument. I accept the fact that
> >
> > \tweak #'text #tuplet-number::calc-fraction-text
> >
> > *is* a function-with-one-argument, but in general how is one supposed to
> > know whether a given expression is just a state-creator or it's a
> > function-with-one-or-more-arguments?
> >
> >
> The only strict definition of the input syntax is the source code of the
> parser
> lily/parser.yy in the source code tree. Also, more and more features of the
> syntax are implemented as music functions instead of being hard coded
> into the parser, so it's not entirely easy to figure out, apart from
> using trial
> and error.
>
> /Mats
>
- Scheme question on strict substitution, Trevor Bača, 2006/11/28
- Re: Scheme question on strict substitution, stk, 2006/11/28
- Re: Scheme question on strict substitution, Werner LEMBERG, 2006/11/29
- Re: Scheme question on strict substitution, Mats Bengtsson, 2006/11/29
- Re: Scheme question on strict substitution, stk, 2006/11/30
- Re: Scheme question on strict substitution, Mats Bengtsson, 2006/11/30
- Re: Scheme question on strict substitution,
stk <=
- Re: Scheme question on strict substitution, Mats Bengtsson, 2006/11/30
- Re: Scheme question on strict substitution, stk, 2006/11/30
- Re: Scheme question on strict substitution, Han-Wen Nienhuys, 2006/11/30