( Data Representation in Scheme

Info Catalog ( Data Representation ( 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.


* A Simple Representation
* Faster Integers
* Cheaper Pairs
* Guile Is Hairier
Info Catalog ( Data Representation ( How Guile does it
automatically generated byinfo2html