| 
          
            Analyzing Module Diversity
            
            
               Alexandre Bergel (Software Composition Group, University of Bern, Switzerland)  
              
             
            
            
               Stéphane Ducasse (LISTIC - Language and Software Evolution Group, University of Savoie, France)  
              
             
            
            
               Oscar Nierstrasz (Switzerland, Software Composition Group, University of Bern)  
              
             
                    
            
              Abstract: Each objectÂoriented programming language   proposes various grouping mechanisms to bundle interacting classes   (i.e., packages, modules, selector namespaces, etc). To understand   this diversity and to compare the different approaches, a common   foundation is needed. In this paper we present a simple module   calculus consisting of a small set of operators over environments   and modules. Using these operators, we are then able to specify a   set of module combinators that capture the semantics of Java   packages, C# namespaces, Ruby modules, selector namespaces, gbeta   classes, classboxes, MZScheme units, and MixJuice modules. We   develop a simple taxonomy of module systems, and show how particular   combinations of module operators help us to draw sharp distinctions   between classes of module systems that share similar   characteristics. 
             
            
              Keywords: C#, Java, Ruby, Small-talk, classboxes, module, package, selector namespaces, virtual classes 
             
            Categories: D.1.5, D.2.1, D.2.2, D.3.2, D.3.3  
           |