This preview shows page 1. Sign up to view the full content.
Unformatted text preview: e of that type. We call this an abstraction
boundary. If a program respects this boundary, we can easily change the
implementation of the data type. If, however, some piece of code breaks the
abstraction by relying on the details of the implementation, then we can no
longer change the implementation.
4. Last, we need a way to combine these units ﬂexibly, so that a single unit
may be reused in different contexts. 2 Modules are connected using a module interconnection language. This language
is largely independent of the base language, and is our primary focus in this chapter.
A program in the module interconnection language consists of a set of module
deﬁnitions. Each deﬁnition binds a name to a module value. A module value is
either a set of bindings, much like an environment, or a module procedure that
takes a module value and produces another module value.
Each module will have a module type. A module type can be an interface, which
is much like a type environment, or a procedure module type, which are analogous
to ordinary procedure types, except that they describe the argument and result...
View Full Document
- Fall '09