Polymorphic type inference and containment
Information and Computation - Semantics of Data Types
An implementation of standard ML modules
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
F-bounded polymorphism for object-oriented programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Qualified types: theory and practice
Qualified types: theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Curiously recurring template patterns
C++ Report
Putting type annotations to work
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Region-based memory management
Information and Computation
Introspective sorting and selection algorithms
Software—Practice & Experience
Objective ML: an effective object-oriented extension to ML
Theory and Practice of Object Systems - Third workshop on foundations of object-oriented languages (FOOL 3)
Programming with CGAL: the example of triangulations
SCG '99 Proceedings of the fifteenth annual symposium on Computational geometry
A library of generic algorithms in Ada
SIGAda '87 Proceedings of the 1987 annual ACM SIGAda international conference on Ada
Efficient Algorithms for Shortest Paths in Sparse Networks
Journal of the ACM (JACM)
Fast Decision Procedures Based on Congruence Closure
Journal of the ACM (JACM)
Variations on the Common Subexpression Problem
Journal of the ACM (JACM)
Communications of the ACM
Communications of the ACM
The boost graph library: user guide and reference manual
The boost graph library: user guide and reference manual
Types and programming languages
Types and programming languages
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
The Mythical Man-Month: Essays on Softw
The Mythical Man-Month: Essays on Softw
Abstraction mechanisms in the BETA programming language
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Definition of Standard ML
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
ISAAC '88 Proceedings of the International Symposium ISSAC'88 on Symbolic and Algebraic Computation
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
The subtyping problem for second-order types is undecidable
Information and Computation
ICSE '79 Proceedings of the 4th international conference on Software engineering
Operators and algebraic structures
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
CLU REFERENCE MANUAL
MLF: raising ML to the power of system F
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Adding wildcards to the Java programming language
Proceedings of the 2004 ACM symposium on Applied computing
ACM SIGPLAN Notices
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Associated types and constraint propagation for mainstream object-oriented generics
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Generalized algebraic data types and object-oriented programming
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A language for generic programming
A language for generic programming
Algorithm specialization in generic programming: challenges of constrained generics in C++
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Variant parametric types: A flexible subtyping scheme for generics
ACM Transactions on Programming Languages and Systems (TOPLAS)
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Practical type inference for arbitrary-rank types
Journal of Functional Programming
An extended comparative study of language support for generic programming
Journal of Functional Programming
Language requirements for large-scale generic libraries
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Variance and generalized constraints for C# generics
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
JavaGI: generalized interfaces for java
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Minimizing dependencies within generic classes for faster and smaller programs
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Adaptable generic programming with required type specifications and package templates
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
The implicit calculus: a new foundation for generic programming
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Hi-index | 0.01 |
Generic programming is an effective methodology for developing reusable software libraries. Many programming languages provide generics and have features for describing interfaces, but none completely support the idioms used in generic programming. To address this need we developed the language G. The central feature of G is the concept, a mechanism for organizing constraints on generics that is inspired by the needs of modern C++ libraries. G provides modular type checking and separate compilation (even of generics). These characteristics support modular software development, especially the smooth integration of independently developed components. In this article we present the rationale for the design of G and demonstrate the expressiveness of G with two case studies: porting the Standard Template Library and the Boost Graph Library from C++ to G. The design of G shares much in common with the concept extension proposed for the next C++ Standard (the authors participated in its design) but there are important differences described in this article.