(guile.info.gz) Values and Variables
Info Catalog
(guile.info.gz) Latent Typing
(guile.info.gz) About Data
(guile.info.gz) Definition
14.1.2 Values and Variables
---------------------------
Scheme provides many data types that you can use to represent your data.
Primitive types include characters, strings, numbers and procedures.
Compound types, which allow a group of primitive and compound values to
be stored together, include lists, pairs, vectors and multi-dimensional
arrays. In addition, Guile allows applications to define their own data
types, with the same status as the built-in standard Scheme types.
As a Scheme program runs, values of all types pop in and out of
existence. Sometimes values are stored in variables, but more commonly
they pass seamlessly from being the result of one computation to being
one of the parameters for the next.
Consider an example. A string value is created because the
interpreter reads in a literal string from your program's source code.
Then a numeric value is created as the result of calculating the length
of the string. A second numeric value is created by doubling the
calculated length. Finally the program creates a list with two
elements - the doubled length and the original string itself - and
stores this list in a program variable.
All of the values involved here - in fact, all values in Scheme -
carry their type with them. In other words, every value "knows," at
runtime, what kind of value it is. A number, a string, a list,
whatever.
A variable, on the other hand, has no fixed type. A variable - `x',
say - is simply the name of a location - a box - in which you can store
any kind of Scheme value. So the same variable in a program may hold a
number at one moment, a list of procedures the next, and later a pair
of strings. The "type" of a variable - insofar as the idea is
meaningful at all - is simply the type of whatever value the variable
happens to be storing at a particular moment.
Info Catalog
(guile.info.gz) Latent Typing
(guile.info.gz) About Data
(guile.info.gz) Definition
automatically generated byinfo2html