On 11 March 2018 at 10:58, David Kastrup <d...@gnu.org> wrote:

> Gianmaria Lari <gianmarial...@gmail.com> writes:
>
> > Just to understand how does it work the relation between scheme and
> > lilypond. Why this does not work?
> >
> > \version "2.19.81"
> > { c#(+6 2) }
> >
> > I would expect this compile to
> >
> > \version "2.19.81"
> > { c8 }
>
> So much wrong with this...

First, (+6 2) calls 6 as function on 2.
> That doesn't work.  You need (+ 6 2) here.
>

yes, this was just a typo.


> Then Scheme expressions written using # in the middle of music are
> expected to be music expressions.

  If you want to insert an actual
> duration, you need to write it preceded with $ so that it can have
> different type (and trigger different syntactic rules).
>
> But $8 is not a duration.  $(ly:make-duration 3 0) would be a duration.


How does it work ?
Originary I thought that before source compilation, there was a step where
to replace scheme expressions with their evaluation, like a preprocessor;
that's why I tried c#(+ 6 2). But ok, it's clear it doesn't work in this
way.

Is this handled by the lilypond parser that create a parse tree and then
according position in the tree and # or $ it expects different types?

Thank you, g.
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to