6.6 Structural Matching
Similar to
unit, except the body of the unit is determined by
an existing unit produced by
unit-expr. The result is a unit
whose implementation is
unit-expr, but whose imports,
exports, and initialization dependencies are as in the
unit/new-import-export form (instead of as in the unit
produced by
unit-expr).
The final clause of the unit/new-import-export form
determines the connection between the old and new imports and exports.
The connection is similar to the way that compound-unit
propagates imports and exports; the difference is that the connection
between import and the right-hand side of the link clause is
based on the names of elements in signatures, rather than the names of
the signatures. That is, a tagged-sig-spec on the right-hand
side of the link clause need not appear as a tagged-sig-spec
in the import clause, but each of the bindings implied by the
linking tagged-sig-spec must be implied by some
tagged-sig-spec in the import clause. Similarly,
each of the bindings implied by an export
tagged-sig-spec must be implied by some left-hand-side
tagged-sig-spec in the linking clause.
(unit/s | (import tagged-sig-spec ...) | (export tagged-sig-spec ...) | init-depends-decl | unit-id) |
|
Like
unit/new-import-export, but the linking clause is
inferred, so
unit-id must have the appropriate static
information.