|
ABSTRACT
Earlier studies have introduced a list of high-level evaluation criteria to assess how well a language supports generic programming. Since each language that meets all criteria is considered generic, those criteria are not fine-grained enough to differentiate between languages for generic programming. We refine these criteria into a taxonomy that captures differences between type classes in Haskell and concepts in C++, and discuss which differences are incidental and which ones are due to other language features. The taxonomy allows for an improved understanding of language support for generic programming, and the comparison is useful for the ongoing discussions among language designers and users of both languages.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
W. Brown, C. Jefferson, A. Meredith, and J. Widman. Named requirements for C++ concepts. Technical Report N2581=08-0091, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, Mar. 2008.
|
 |
3
|
|
 |
4
|
|
 |
5
|
Manuel M. T. Chakravarty , Gabriele Keller , Simon Peyton Jones , Simon Marlow, Associated types with class, Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.1-13, January 12-14, 2005, Long Beach, California, USA
|
 |
6
|
|
| |
7
|
|
| |
8
|
J. Gibbons. Datatype-generic programming. In Spring School on Datatype-Generic Programming, volume 4719 of LNCS, pages 1--71. Springer, 2007.
|
| |
9
|
P. Gottschling. Fundamental algebraic concepts in concept-enabled C++. Technical Report 638, Indiana University, 2006.
|
| |
10
|
P. Gottschling. Concept implication and requirement propagation. Technical Report N2646=08-0156, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, May 2008.
|
| |
11
|
D. Gregor. ConceptGCC - a prototype compiler for C++ concepts. http://www.generic-programming.org/software/ConceptGCC/, Jan. 2008.
|
| |
12
|
D. Gregor. Type-soundness and optimization in the concepts proposal. Technical Report N2576=08-0086, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, Mar. 2008.
|
| |
13
|
D. Gregor and J. Siek. Implementing concepts. Technical Report N1848=05-0108, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, Aug. 2005.
|
 |
14
|
Douglas Gregor , Jaakko Järvi , Jeremy Siek , Bjarne Stroustrup , Gabriel Dos Reis , Andrew Lumsdaine, Concepts: linguistic support for generic programming in C++, Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
|
| |
15
|
D. Gregor, B. Stroustrup, J. Widman, and J. Siek. Proposed wording for concepts (revision 5). Technical Report N2617=08-0127, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, May 2008.
|
| |
16
|
R. Hinze and S. Peyton Jones. Derivable type classes. In G. Hutton, editor, Proc. 2000 ACM SIGPLAN Haskell Workshop, volume 41.1 of Electronic Notes in Theoretical Computer Science. Elsevier Science, 2001.
|
 |
17
|
|
| |
18
|
M. Jazayeri, R. Loos, and D. Musser, editors. Generic Programming: International Seminar, Dagstuhl Castle, Germany, 1998, Selected Papers, volume 1766 of LNCS, 2000. Springer.
|
 |
19
|
|
| |
20
|
|
| |
21
|
|
| |
22
|
W. Kahl and J. Scheffczyk. Named instances for Haskell type classes. In R. Hinze, editor, Proc. 2001 ACM SIGPLAN Haskell Workshop, pages 77--99. Elsevier Science, 2001.
|
| |
23
|
O. Kiselyov and S. Peyton Jones. Choosing a type-class instance based on the context, Apr. 2008. URL http://haskell.org/haskellwiki/GHC/AdvancedOverlap.
|
| |
24
|
O. Kiselyov and C.-C. Shan. Lightweight static resources, for safe embedded and systems programming. In Draft Proceedings of Trends in Functional Programming. Seton Hall University, 2007.
|
| |
25
|
J. Meacham. Class alias proposal for Haskell, 2006. URL http://repetae.net/recent/out/classalias.html.
|
| |
26
|
N. Mitchell. Deriving generic functions by example. Technical report, Dept. of Computer Science, University of York, UK, 2007. Tech. Report YCS-2007-421.
|
 |
27
|
Gustav Munkby , Andreas Priesnitz , Sibylle Schupp , Marcin Zalewski, Scrap++: scrap your boilerplate in C++, Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming, September 16-16, 2006, Portland, Oregon, USA
[doi> 10.1145/1159861.1159871]
|
| |
28
|
S. Peyton Jones. Haskell 98 Language and Libraries: the Revised Report. Cambridge University Press, 2003.
|
| |
29
|
S. Peyton Jones, M. Jones, and E. Meijer. Type classes: an exploration of the design space. In Haskell Workshop, 1997.
|
| |
30
|
R. Rivera, B. Dawes, and D. Abrahams. The boost C++ libraries. http://www.boost.org/, 2008.
|
 |
31
|
Alexey Rodriguez , Johan Jeuring , Patrik Jansson , Alex Gerdes , Oleg Kiselyov , Bruno C. d. S. Oliveira, Comparing libraries for generic programming in haskell, Proceedings of the first ACM SIGPLAN symposium on Haskell, September 25-25, 2008, Victoria, BC, Canada
|
 |
32
|
Tom Schrijvers , Simon Peyton Jones , Manuel Chakravarty , Martin Sulzmann, Type checking with open type functions, Proceeding of the 13th ACM SIGPLAN international conference on Functional programming, September 20-28, 2008, Victoria, BC, Canada
|
| |
33
|
T. Sheard. Generic programming in Ωmega. In Datatype-Generic Programming, volume 4719 of LNCS, pages 258--284. Springer, 2007.
|
 |
34
|
|
 |
35
|
|
| |
36
|
A. A. Stepanov and M. Lee. The standard template library. Technical Report HPL-95-11(R.1), Hewlett Packard Laboratories, Palo Alto, CA, USA, Nov. 1995.
|
 |
37
|
|
 |
38
|
Martin Sulzmann , Manuel M. T. Chakravarty , Simon Peyton Jones , Kevin Donnelly, System F with type equality coercions, Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation, January 16-16, 2007, Nice, Nice, France
[doi> 10.1145/1190315.1190324]
|
| |
39
|
|
| |
40
|
|
 |
41
|
|
| |
42
|
J. Willcock, J. Järvi, A. Lumsdaine, and D. Musser. A formalization of concepts for generic programming. In Concepts: a Linguistic Foundation of Generic Programming at Adobe Tech Summit. Adobe Systems, Apr. 2004.
|
| |
43
|
M. Zalewski, A. P. Priesnitz, C. Ionescu, N. Botta, and S. Schupp. Multi-language library development: From Haskell type classes to C++ concepts. In MPOOL 2007, 2007.
|
CITED BY
|
|
Alexey Rodriguez , Johan Jeuring , Patrik Jansson , Alex Gerdes , Oleg Kiselyov , Bruno C. d. S. Oliveira, Comparing libraries for generic programming in haskell, Proceedings of the first ACM SIGPLAN symposium on Haskell, September 25-25, 2008, Victoria, BC, Canada
|
|