The environment in GCL which is passed to macroexpand and
other functions requesting an environment, should be a
list of 3 lists. The first list looks like ((v1 val1) (v2 val2) ..)
where vi are variables and vali are their values.
The second is a list of ((fname1 . fbody1) (fname2 . fbody2) ...)
where fbody1 is either (macro lambda-list lambda-body) or
(lambda-list lambda-body) depending on whether this is a macro
or a function. The third list contains tags and blocks.