DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(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