On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Abstraction and specification in program development
Abstraction and specification in program development
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
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
Eiffel: the language
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
A type system for prototyping languages
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An overview of the Tecton proof system
Theoretical Computer Science - Special issue on formal methods in databases and software engineering
ACM Transactions on Programming Languages and Systems (TOPLAS)
Putting type annotations to work
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
The generic graph component library
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Fast Decision Procedures Based on Congruence Closure
Journal of the ACM (JACM)
Design and implementation of generics for the .NET Common language runtime
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
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
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
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
Intersection types and bounded polymorphism
Mathematical Structures in Computer Science
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Proceedings of the tenth ACM SIGPLAN international conference on Functional 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
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Software extension and integration with type classes
Proceedings of the 5th international conference on Generative programming and component engineering
Debugging C++ template metaprograms
Proceedings of the 5th international conference on Generative programming and component engineering
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An extended comparative study of language support for generic programming
Journal of Functional Programming
A comparison of c++ concepts and haskell type classes
Proceedings of the ACM SIGPLAN workshop on Generic programming
C++ concepts as institutions: a specification view on concepts
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
EClean - An Embedded Functional Language
Electronic Notes in Theoretical Computer Science (ENTCS)
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Domain-specific language integration with compile-time parser generator library
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Generic programming with c++ concepts and haskell type classes: A comparison
Journal of Functional Programming
Functional programming with C++ template metaprograms
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
A language for generic programming in the large
Science of Computer Programming
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Language requirements for large-scale generic libraries
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
The implicit calculus: a new foundation for generic programming
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Design of concept libraries for c++
SLE'11 Proceedings of the 4th international conference on Software Language Engineering
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
JavaGI: generalized interfaces for java
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Early detection of type errors in C++ templates
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
Concepts are an essential language feature for generic programming in the large. Concepts allow for succinct expression of constraints on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In this paper we present the design of a type system and semantics for concepts that is suitable for non-type-inferencing languages. Our design shares much in common with the type classes of Haskell, though our primary influence is from best practices in the C++ community, where concepts are used to document type requirements for templates in generic libraries. Concepts include a novel combination of associated types and same-type constraints that do not appear in type classes, but that are similar to nested types and type sharing in ML.