One of the bread-and-butter tasks in programming is handling variables. We already have seen predefined and custom variable definitions, but now it is time to have a closer look at the topic.
We have seen that symbols can be used as self-evaluating data or as references to something else: the quoted symbol
'red simply evaluates to that name while the symbol
red evaluates to the list
(1.0 0.0 0.0).
guile> 'red red guile> red (1.0 0.0 0.0)
The usual Scheme terminology for the latter case is to say that “the name
red evaluates to that list” and that “the list is bound to the variable/name
In the case of
red this binding is available because it has been created explicitly somewhere in the LilyPond initialization files, but when we need our own variable name, say
violet evaluating to
(0.5 0.0 1.0), we have to “create the binding” ourselves.
Bindings can be created at top-level or locally, which we'll investigate in the following chapters.