7.12 Transformer 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.
Added in version 6.1.1.8 of package base.