Reference Value

A ReferenceValue is a special type of value in programming languages that allow side effects and are based on the environment model.

The essential property of a ReferenceValue is that it both is a value and can have a value, and it can have different values at different times.

The property enables stateful computation.

The operation of making a ReferenceValue denote a new value (which can be another ReferenceValue) is called assignment.

The operation of obtaining the value that a ReferenceValue denotes is called dereferencing, and in most language one level of dereferencing is implicit, except on the left hand side of the assignment operator and in other distinguished cases.

But there have been languages like the BlissLanguage where all dereferencing had to explicitly notated, for example as in (the dot is the dereference operator):

  a = .a + 1
NOTE: operators like $ or @ in the PerlLanguage are not dereferencing operators, they are operators on strings, and they are property lookup operators for the atom named by the following string, as in the LispLanguage.

Pointers are usually implemented as a ReferenceValue, and variables are usually implemented as a manifestly named constant ReferenceValue.

In many languages, those that have StaticTyping, a ReferenceValue may be associated with a constraint as to the values it can denote. This allows for several optimizations, as well as being of documentary value. This all means that a common definition like

  auto int i;
is really a shorthand for something like:

  manifest i == auto new reference;
  ensure typeof(valueof i) == int;


EditText of this page (last edited November 29, 2004) or FindPage with title or text search