ly:context-property-where-defined returns differently depending on if a
property is unset or explicitly set to '() – I'm guessing this is one of
the things you had in mind by "not really pretty"?

On Sat, Jan 4, 2025 at 5:18 PM David Kastrup <d...@gnu.org> wrote:

> Dan Eble <dan@lyric.works> writes:
>
> > Old-timers,
> >
> > For some reason, I had it in my head that a context property could not
> > be set to *unspecified*, but now that I have looked again, I see that
> > that is false.  It is possible to set a property to *unspecified* and
> > mask the value from the enclosing context, just like setting any other
> > value.
> >
> > The new \contextPropertyCheck [1] function is affected by my mistake,
> > and I would like to correct it.
> >
> > Before I extend \contextPropertyCheck to handle the possibility that a
> > property is set to *unspecified*, I want to make sure that in general,
> > the current treatment of *unspecified* is the desired treatment.
> >
> > I thought to use ChatGPT (that charlatan) to look for leads on
> > real-world uses of *unspecified*.  It would have me believe that these
> > are effectively the same and are documented as such:
> >
> >     \set property = #*unspecified*
> >     \unset property
> >
> > They are not the same, and I don't see this in the current
> > documentation, but was there ever a time when they were the same?
>
> No.  There is some overlap of unset properties and properties set to '()
> which is not really pretty but possibly a hangover from the LISP mindset
> where (not 1) and '() are the same, namely NIL.
>
> But I don't think *unspecified* was ever really used in LilyPond.
>
> --
> David Kastrup
>
>

Reply via email to