Guile Reference Manual: A Simple Representation

Warning: This is the manual of the legacy Guile 2.0 series. You may want to read the manual of the current stable series instead.

Next: , Up: Data Representation [Contents][Index]


9.2.1 A Simple Representation

The simplest way to represent Scheme values in C would be to represent each value as a pointer to a structure containing a type indicator, followed by a union carrying the real value. Assuming that SCM is the name of our universal type, we can write:

enum type { integer, pair, string, vector, ... };
typedef struct value *SCM;
struct value {
 enum type type;
 union {
 int integer;
 struct { SCM car, cdr; } pair;
 struct { int length; char *elts; } string;
 struct { int length; SCM *elts; } vector;
 ...
 } value;
};

with the ellipses replaced with code for the remaining Scheme types.

This representation is sufficient to implement all of Scheme’s semantics. If x is an SCM value:

AltStyle によって変換されたページ (->オリジナル) /