7.12Transformer Helpers

The racket/unit-exptime library provides procedures
that are intended for use by macro transformers. In particular, the
library is typically imported using for-syntax into a module
that defines macro with define-syntax.

If unit-identifier is bound to static unit information via
define-unit (or other such forms), the result is two
values. The first value is for the unit’s imports, and the second is
for the unit’s exports. Each result value is a list, where each list
element pairs a symbol or #f with an identifier. The symbol
or #f indicates the import’s or export’s tag (where
#f indicates no tag), and the identifier indicates the
binding of the corresponding signature.

If unit-identifier is not bound to static unit information,
then the exn:fail:syntax exception is raised. In that case, the given
err-syntax argument is used as the source of the error, where
unit-identifier is used as the detail source location.

If sig-identifier is bound to static unit information via
define-signature (or other such forms), the result is four
values:

an identifier or #f indicating the signature (of any)
that is extended by the sig-identifier binding;

a list of identifiers representing the variables
supplied/required by the signature;

a list of identifiers for variable definitions in the
signature (i.e., variable bindings that are provided on
import, but not defined by units that implement the
signature); and

a list of identifiers with syntax definitions in the signature.

Each of the result identifiers is given a lexical context that is
based on sig-identifier, so the names are suitable for
reference or binding in the context of sign-identifier.

If sig-identifier is not bound to a signature, then the
exn:fail:syntax exception is raised. In that case, the given
err-syntax argument is used as the source of the error, where
sig-identifier is used as the detail source location.

If unit-identifier is bound to static unit information via
define-unit (or other such forms), the result is a list of
pairs. Each pair combines a tag (or #f for no tag) and a
signature name, indicating an initialization dependency of the unit on
the specified import (i.e., the same tag and signature are included in
the first result from unit-static-signatures).

If unit-identifier is not bound to static unit information,
then the exn:fail:syntax exception is raised. In that case, the given
err-syntax argument is used as the source of the error, where
unit-identifier is used as the detail source location.