ly, we speek of document unitsmeaning either toplevel module documents or sections within another unit or submodules located in other units. Toplevel module documents and submodules are modules. Sections and submodules can be nested to arbitrary depth, and Dewey decimal numbers are automatically created to reflect that nesting. Currently, the numbering is only recalculated at the time of redisplay, so that the numbering becomes inconsistent after the creation of new subunits. 6.2.1. Unit Structure Every unit is structured as follows:first there is some dir ct contents , and then there is a sequence of subunits. There can be no contents between or after subunits. Direct contents together with the subunits are a module’s contents. For any unit, itscurrent moduleis defined as follows:any module document or submodules is its own current module, and for every unit, its current module is also the current module of each section in that unit. For every unit, the submodules located in that unit are di ct submodulesof its current module. This implies, that a direct submodule of a module may still be hidden in deeply nested sections, for example. From the point of view of a direct submodule of another module, the latter is also called theparent moduleof the former. Every unit has associated with it a n meand atitle. A module’s name must be nonempty, must not contain the period character “.” and within every module, no two submodules may have the same name. For this reason, a machine-generated name is provided at the time of creation of every new module; changes to module names are checked to preserve the uniqueness property. For sections the names are usually irrelevant and therefore may be empty; however, within every module, no two sections may have the same nonempty name. These local module names are used to construct absolute module paths . For a toplevel 6.2. “Units”: Modules and Sections 15 module, its absolute module path is just its name. For a direct submodule of another module, the submodule’s absolute module path consists of the absolute module path of its parent, a period character “.” and its own name. As already mentioned, HOPS does not allow to have two toplevel moduleswith the same name loaded. Therefore,absloute module pathsuniquely identify loaded modules.
[1]
Wolfram Kahl.
A Fibred Approach to Rewriting | How the Duality between Adding and Deleting Cooperates with the Diierence between Matching and Rewriting
,
1997
.
[2]
Simon L. Peyton Jones,et al.
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
,
1992,
SIGP.
[3]
Jan Willem Klop,et al.
Combinatory reduction systems
,
1980
.
[4]
Antony J. T. Davie.
An introduction to functional programming systems using Haskell
,
1992
.
[5]
Gunther Schmidt,et al.
Relations and Graphs: Discrete Mathematics for Computer Scientists
,
1993
.
[6]
J. Michael Spivey,et al.
The Z notation - a reference manual
,
1992,
Prentice Hall International Series in Computer Science.
[7]
Friedrich L. Bauer,et al.
Formal Program Construction by Transformations-Computer-Aided, Intuition-Guided Programming
,
1989,
IEEE Trans. Software Eng..
[8]
Wolfram Kahl.
Can Functional Programming Be Liberated from the Applicative Style?
,
1994,
IFIP Congress.
[9]
Wolfram Kahl,et al.
Algebraische Termgraphersetzung mit gebundenen Variablen
,
1996,
Informatik.
[10]
Wolfram Kahl,et al.
Relational Treatment of Term Graphs With Bound Variables
,
1998,
Log. J. IGPL.
[11]
Gunther Schmidt,et al.
An Interactive Graphical Manipulation System for Higher Objects Based on Relational Algebra
,
1986
.
[12]
Margaret M. Burnett,et al.
Visual Programming
,
1995
.
[13]
Carolyn L. Talcott,et al.
A Theory of Binding Structures and Applications to Rewriting
,
1993,
Theor. Comput. Sci..
[14]
Maarten M. Fokkinga,et al.
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
,
1991,
FPCA.
[15]
Friedrich L. Bauer,et al.
The Munich Project CIP: Volume I: The Wide Spectrum Language CIP-L
,
1985
.