lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: alist problem


From: David Kastrup
Subject: Re: alist problem
Date: Wed, 05 Dec 2018 15:37:21 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

David Sumbler <address@hidden> writes:

> IR 2.19.82 shows the following amongst the settings for TrillSpanner:
>
> bound-details (list):
> '((left (text #<procedure musicglyph-markup (layout props glyph-name)>
>               "scripts.trill")
>         (Y . 0)
>         (stencil-offset -0.5 . -1)
>         (padding . 0.5)
>         (attach-dir . 0))
>   (left-broken (end-on-note . #t))
>   (right (Y . 0)))
>
> If I write
>
> \override TrillSpanner.bound-details.left-broken = #'(end-on-note . #t)
>
> Lilypond accepts it, suggesting that I am using the correct syntax.

You aren't.  You are putting a pair where an association list should
be.  This would need to be

\override TrillSpanner.bound-details.left-broken = #'((end-on-note . #t))

to have the same effect.

> But if I write
>
> \override TrillSpanner.bound-details.right = #'(Y . 0)
>
> Lilypond produces:
>
> ERROR: Wrong type argument in position 2 (expecting association list):
> (Y . 0)
>
> I can't figure out why this is.  Can somebody please explain it to me,
> and show me the correct syntax?

(Y . 0) is a pair, not an association list.  To get the same effect,
you'd need to write

\override TrillSpanner.bound-details.right = #'((Y . 0))

or alternatively (assuming you want other right bound-details to stay)

\override TrillSpanner.bound-details.right.Y = 0

> (The reason for doing this was to try to shorten the extent of a trill
> spanner.  This may not be the correct parameter to change, which is
> why I was trying different values; but even if that is true, I would
> still like to know why my line produces an error.)

Because you cannot add or delete parens at will.  Note that
(right (Y . 0)) is a shorthand for (right . ((Y . 0))) .  It is easy to
overlook this when looking at a pair (like the key-value pair of an
association list) where the cdr is a list in itself.  In that case, the
Scheme printer elides the dot and one level of parens around the cdr,
simply because a list is indistinguishable from a dotted list where the
cdr is a list itself.

-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]