Previous: Higher-order Arglists, Up: Principles of Compilation

5.6 Typing and Constants

All C<->Scheme conversions for immediate objects like numbers, booleans and characters are introduced. Internal apply is used for undefined procedures. Some optimizations are performed to decrease the amount of C<->Scheme object conversions.

All vector, pair and string constants are replaced by new variables. These variables are instantiated to the right values by init_foo*.

Procedures foo which are to be exported (made accesible to the interpreter), and which have an arity different from one of the following five templates: x, (), (x), (x y), (x y z), are made accessible via an additional procedure foo_wrapper taking a single list argument.

C Code Generation

More or less straightforward.

The type conversion between C objects and immediate Scheme objects of the type boolean, char and num is performed by macros. The scheme object '() is represented by the macro object EOL.

Intermediate files

Experiment yourself by defining:

     (define *build-intermediate-files* #t)

instead of the default:

     (define *build-intermediate-files* #f).