Results 1 -
3 of
3
Essential language support for generic programming
- In PLDI ’05
, 2005
"... “Concepts ” are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In th ..."
Abstract
-
Cited by 26 (4 self)
- Add to MetaCart
“Concepts ” are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In this paper we formalize 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. The technical development in this paper defines an extension to System F and a type-directed translation from the extension back to System F. The translation is proved sound; the proof is written in the human readable but machine checkable Isar language and has been automatically verified by the Isabelle proof assistant. This document was generated directly from the Isar theory files using Isabelle’s support for literate proofs.
Proposal for Constrained Generics and Module Extensions for Chapel
, 2011
"... Generics, in its basic form, is a programming language feature that enables the parameterization of software components with respect to type. For example, a List class can be parameterized on the type of its elements, enabling the same List class to be used for lists of integers, lists of strings, e ..."
Abstract
- Add to MetaCart
Generics, in its basic form, is a programming language feature that enables the parameterization of software components with respect to type. For example, a List class can be parameterized on the type of its elements, enabling the same List class to be used for lists of integers, lists of strings, etc. Generics, in its more advanced form, enables parameterization with respect to types and operations on those types. The advanced form of generics facilitates generic
The C++0x “Concepts” Effort
, 2011
"... C++0x is the working title for the revision of the ISO standard of the C++ programming language that was originally planned for release in 2009 (but that will probably appear in 2011). The largest language extension in C++0x was “concepts”, that is, a collection of features for constraining template ..."
Abstract
- Add to MetaCart
C++0x is the working title for the revision of the ISO standard of the C++ programming language that was originally planned for release in 2009 (but that will probably appear in 2011). The largest language extension in C++0x was “concepts”, that is, a collection of features for constraining template parameters. In September of 2008, the C++ standards committee voted the concepts extension into C++0x, but then in July of 2009, the committee voted the concepts extension back out of C++0x. This article is my account of the technical challenges and debates within the “concepts” effort in the years 2003 to 2009.

