Reinhold Kainhofer <reinh...@kainhofer.com> writes:

> Am Montag, 5. September 2011, 21:25:50 schrieb Neil Puttock:
>> On 5 September 2011 20:10, David Kastrup <d...@gnu.org> wrote:
>> > I suggest trying the following Lilypond fragment out.
>> > 
>> > #(define (make-accidental-mod style)
>> >  "Make a context modification from accidental style @var{style}."
>> >  (let ((style-settings '(1 2 3 4)))
>> >   #{ \with { extraNatural = #(cadr $style-settings)
>> >              autoAccidentals = #(caddr $style-settings)
>> >              autoCautionaries = #(cadddr $style-settings) } #}))
>> > #(display (make-accidental-mod 'modern))
>> 
>> Heh, silly me.  I was rather stupidly testing it with \set, which
>> naturally causes the parser to complain.
>> 
>> I suppose this means ly:make-context-mod is redundant then.
>
> I would still keep it so that one can create a context-mod directly in
> scheme without resolving to a #{..#} block...

#{..#} _is_ a direct Scheme construct interpreted at _read_ time in the
Scheme reader.  It is enabled in scm/parser-ly-from-scheme.scm with the
line
(read-hash-extend #\{ read-lily-expression).

Within Lilypond, there is no place where you can read Scheme source but
not a #{...#} construct except in the load order before
scm/parser-ly-from-scheme.scm.  But when in doubt, the load order can be
fixed.  Things like scm/parser-ly-from-scheme.scm obviously belong early
in the load order, along with macro definitions.

So "directly in Scheme" is a mischaracterization, and there is about as
little utility to "without resolving to a #{..#} block" as there is to
"without resolving to a macro call".

Guile 2.0 caused surprises with macro calls, and it might cause
surprises with read-hash-extend.  Either will warrant fixing rather than
avoiding.

-- 
David Kastrup


_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to