Definition module 2026-11-05
A definition module declares the exported interface of a Modula-2 module. It tells clients which names and data types they can use, while the implementation module supplies procedure bodies and private details. The boundary supports separate compilation and programming abstraction.
For example, a stack interface can declare an abstract stack type and push/pop operations without exposing whether storage uses an array or a linked list. Clients should preserve the declared contract rather than inspecting hidden representation. GNU Modula-2 conventionally stores a definition module in a
.def file and parses it when compiling importing modules; it does not compile the definition module separately as executable code.[ref]Compiler options in the GNU Modula-2 documentation. §2.2, .def and .mod source-file handling
Gerald Jay Sussman Created 2026-10-18 Updated 2026-11-05
Gerald Jay Sussman is a computer scientist whose work includes the design and explanation of systems expressed as programs. With Hal Abelson and Julie Sussman, he authored Structure and Interpretation of Computer Programs by Harold Abelson and others, a text that develops programming abstraction, recursion and models of program execution through Scheme.[ref]
Structure and Interpretation of Computer Programs by Harold Abelson and others. Second-edition byline and section 1.2
One useful distinction in the text is between the shape of a procedure's source and the computation it generates. A syntactically recursive procedure can produce an iterative process when no deferred operations accumulate. That makes the execution model, rather than the presence of a self-call alone, central to reasoning about storage.[ref]
Portrait of Gerald Jay Sussman
. Phoebe, own photograph at MIT, 29 January 2024; existing Commons crop. Creative Commons Attribution-Share Alike 4.0 International., via Wikimedia Commons. Source. Hal Abelson Created 2026-10-24 Updated 2026-11-05
Hal Abelson is a computer scientist whose work uses computer programming as a way to express and investigate ideas. With Gerald Jay Sussman, he developed the course behind Structure and Interpretation of Computer Programs by Harold Abelson and others. Its use of Scheme connects concrete programs with programming abstraction, recursion and the organization of computations.[ref]
His work on Logo and computational geometry also brought mathematical exploration into programming education. Rather than treating a program only as a sequence of commands, this approach lets a learner examine how a compact procedure generates an entire family of behaviours.[ref]
Portrait of Hal Abelson
. Joi, Flickr photograph, 23 June 2011; Commons records a successful CC BY 2.0 Flickr review. Creative Commons Attribution 2.0 Generic., via Wikimedia Commons. Source. Programming abstraction 2026-11-05
Programming abstraction exposes a useful interface while suppressing details that clients need not depend on. A procedure abstracts a computation, an abstract data type abstracts a representation and its operations, and a software module organizes a boundary between cooperating components. The contract must state the behavior on which callers may rely.
For example, a stack interface can offer push, pop and an empty test. An array implementation and a linked-list implementation can satisfy that same interface, although their allocation and cost behavior differ. A caller that inspects private array indices has crossed the abstraction boundary. A representation invariant and operation specifications explain why the implementation realizes the interface. Abstraction therefore supports local reasoning and replacement, while resource guarantees still need to be part of the contract when clients depend on them.

