> Let's assume that we "unify" the interface to context and grob
> properties. The _default_ operation on a context property will
> _always_ be overwrite rather than push, since context properties
> track the change of things like the current clef, the current key
> signature, the current whatever. There is no point in keeping a
> stack for that by default, and it would be seriously confusing.
>
> That is what the default operation on a grob property is right now:
> it overwrites the current top of the stack. This matches the
> default operation on context properties. As contrasted to context
> properties, grob properties have a save stack. There is no
> LilyPond-accessible manner to access it, it is only available from
> Scheme.
What about having a `simple' and an `advanced' interface? This is,
let's stay with the current commands, enriched by \temporary and
friends as suggested by David. At the same time, we could provide
\push, \pop, and \clear (with *this* names) for advanced users who
want to write music functions without side effects.