# Paper announcement: What is a Recursive Module?

• To: types@cis.upenn.edu
• Subject: Paper announcement: What is a Recursive Module?
• From: Robert Harper <rwh@cs.cmu.edu>
• Date: Tue, 20 Oct 1998 13:30:49 -0400
• Importance: Normal
• MMDF-Warning: Parse error in original version of preceding line at postoffice.srv.cs.cmu.edu

The following paper is available at URL
http://www.cs.cmu.edu/~rwh/papers/papers.html or
http://www.cs.cmu.edu/~crary/papers/index.html.

What is a Recursive Module?

Karl Crary   Robert Harper   Sidd Puri

Hierarchical module systems are an effective tool for structuring large
systems.  The restriction to acyclic import dependencies inherent in such
systems can impede modular programming by forcing mutually-dependent
components to be consolidated into a single module.  Recently there have been
several proposals for module systems that admit cyclic dependencies, but it is
not clear how these proposals relate to one another, nor how one might
integrate them into an expressive module system such as that of Standard ML or
O'Caml.  To address this question we provide a type-theoretic analysis of the
notion of a recursive module in the context of the phase-distinction''
formalism for higher-order module systems.  We extend this calculus with a
recursive module mechanism and a new form of signature, called a
\emph{recursively-dependent signature}, to support the definition of recursive
modules.  These extensions are justified by an interpretation in terms of more
primitive language constructs.  This interpretation may also serve as a guide
for implementation.

Comments and suggestions are most welcome.

Bob Harper and Karl Crary