(guile.info.gz) Data Representation in Scheme
Info Catalog
(guile.info.gz) Data Representation
(guile.info.gz) How Guile does it
18.1 Data Representation in Scheme
==================================
Scheme is a latently-typed language; this means that the system cannot,
in general, determine the type of a given expression at compile time.
Types only become apparent at run time. Variables do not have fixed
types; a variable may hold a pair at one point, an integer at the next,
and a thousand-element vector later. Instead, values, not variables,
have fixed types.
In order to implement standard Scheme functions like `pair?' and
`string?' and provide garbage collection, the representation of every
value must contain enough information to accurately determine its type
at run time. Often, Scheme systems also use this information to
determine whether a program has attempted to apply an operation to an
inappropriately typed value (such as taking the `car' of a string).
Because variables, pairs, and vectors may hold values of any type,
Scheme implementations use a uniform representation for values -- a
single type large enough to hold either a complete value or a pointer
to a complete value, along with the necessary typing information.
The following sections will present a simple typing system, and then
make some refinements to correct its major weaknesses. However, this is
not a description of the system Guile actually uses. It is only an
illustration of the issues Guile's system must address. We provide all
the information one needs to work with Guile's data in How Guile
does it.
Menu
* A Simple Representation
* Faster Integers
* Cheaper Pairs
* Guile Is Hairier
Info Catalog
(guile.info.gz) Data Representation
(guile.info.gz) How Guile does it
automatically generated byinfo2html