Controlling when an expression is evaluated lets you generate the actual
variable names at run-time. This can produce extremely concise code,
particularly compared to the C language equivalent. In the following
example, a set of simple objects each has a value. The object name and its
value is entered. In a conventional language, we might search the array of
objects to find the one with the given name, and then make the assignment.
Gamma makes it possible to directly construct the variable reference using
the set function, as
follows:
Gamma>name = "fido";"fido"Gamma>value = "bites";"bites"Gamma>set(symbol(string(name)), value);"bites"Gamma>fido;"bites"
Note that the syntax does not accept the = assignment
operator, so the functional form of the assignment operator:
set must be used. Note also that we would probably
use undefined_p to verify that the variable actually
existed to avoid halting the program due to an undefined variable error.
Although the example is trivial, this technique is very useful for
constructing function references based on run-time data.