J&: Nested Intersection for Scalable Software Composition
by Nathaniel Nystrom, Xin Qi, Andrew C. Myers. 2006.
We identify the following requirements for general extension
and composition of software systems:
- Orthogonal extension: Extensions may require both new data
types and new operations.
- Type safety: Extensions cannot create run-time type errors.
- Modularity: The base system can be extended without modifying
or recompiling its code.
- Scalability: Extensions should be scalable. The amount of code
needed should be proportional to the functionality added.
- Non-destructive extension: The base system should still be
available for use within the extended system.
- Composability of extensions.
The first three of these requirements correspond to Wadler’s expression
problem. Scalability (4) is often but not necessarily
satisfied by supporting separate compilation; it is important for extending
large software. Non-destructive extension (5) enables existing
clients of the base system and also the extended system itself
to interoperate with code and data of the base system, an important
requirement for backward compatibility. Nested inheritance
addresses the first five requirements, but it does not support extension
composition. Nested intersection adds this capability.
Compare this approach to one taken by Scala (or read the section 7).
Recent comments
25 weeks 6 days ago
25 weeks 6 days ago
25 weeks 6 days ago
48 weeks 14 hours ago
1 year 1 day ago
1 year 1 week ago
1 year 1 week ago
1 year 4 weeks ago
1 year 9 weeks ago
1 year 9 weeks ago