Hash table.
Technically this could be a derived data type instead of being built-in to the
interpreter. And perhaps in the future it will be. But for now, a hash table
is too important of a data type to not be included.

Type to hold a syntax object that is created by a macro definition.
Syntax objects are not used like regular types in that they are not
passed around within variables. In other words, you cannot use set! to
assign a variable to a syntax object. But they are used during function
application. In any case, it is convenient to define the type here
because syntax objects are stored in the same environments and
manipulated by the same functions as regular variables.