lilypond-user
[Top][All Lists]
Advanced

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

Re: Clef change after end-repeat before break -- how?


From: Jean Abou Samra
Subject: Re: Clef change after end-repeat before break -- how?
Date: Sat, 28 Jan 2023 18:00:13 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0

On 28/01/2023 16:51, David Kastrup wrote:
> Jean Abou Samra <jean@abou-samra.fr> writes:
> 
>>> Le 28 janv. 2023 à 08:01, Darren Ng <un1gfn@gmail.com> a écrit :
>>>
>>> [subject] How to define a macro that expands to a percussion "pitch"?
>>
>>
>> It may be worth noting that LilyPond does not have macros, only
>> variables and regular functions. Call me pedantic, but I think it is
>> helpful not to conflate the two.
> 
> It's a hybrid, actually.  In Lispy terms, the difference between a
> function and a macro is that a function evaluates its arguments while a
> macro evaluates the result of executing the macro body on the
> unevaluated arguments.
> 
> LilyPond evaluates a music/event/scheme/void function's body after
> reading its arguments but the reading/interpretation of the arguments is
> directed by the predicates.
> 
> So a music/event/scheme/void function does evaluate some of its parts
> (the predicates) in order to direct the syntactic interpretation of its
> arguments.



OK, I grant you that. Still very different from the concepts of
"macros" found in Scheme, Lisp, C, TeX or Rust, though.


>> There is no way in LilyPond to make a variable "just be replaced by
>> this code". Sometimes users get confused by this (I remember a
>> question about defining a chord modifier, which was similar to this
>> one). Instead, there are functions, as well as some other mechanisms
>> like drumPitchNames.
> 
> In general, things are not purely functional but the categories and
> interpretation change around more by ad-hoc conditions than a cohesive
> macro mechanism.


Yup.

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

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