These examples use the definitions from the earlier unit examples in section 7.1.1.
The following compound-unit expression creates a useless wrapping around the unit bound to f1@:
(define f3@ (compound-unit (import) (link [A (f1@)]) (export (A (x A:x)))))
The only difference between f1@ and f3@ is that f1@ exports a variable named x, while f3@ exports a variable named A:x.
The following example shows how the database@ and interface@ units are linked together with a graphical toolbox unit Graphics to produce a single, fully-linked compound unit for the interactive phone book program.
(define program@ (compound-unit (import) (link (GRAPHICS (graphics@)) (DATABASE (database@ (INTERFACE show-message))) (INTERFACE (interface@ (DATABASE insert lookup) (GRAPHICS make-window make-button)))) (export)))
This phone book program is executed with (invoke-unit program@). If (invoke-unit program@) is evaluated a second time, then a new, independent database and window are created.