| 1 | \documentclass[format=acmlarge, anonymous, review]{acmart}
|
|---|
| 2 |
|
|---|
| 3 | \citestyle{acmauthoryear}
|
|---|
| 4 |
|
|---|
| 5 | \newcommand{\CFA}{C$\mathbf\forall$}
|
|---|
| 6 | \newcommand{\TODO}{\textbf{TODO}}
|
|---|
| 7 |
|
|---|
| 8 | \acmJournal{PACMPL}
|
|---|
| 9 |
|
|---|
| 10 | \title{Generic Types with Efficient Dynamic Layout in \CFA{}}
|
|---|
| 11 |
|
|---|
| 12 | \author{Aaron Moss}
|
|---|
| 13 | \affiliation{%
|
|---|
| 14 | \institution{University of Waterloo}
|
|---|
| 15 | \department{David R. Cheriton School of Computer Science}
|
|---|
| 16 | \streetaddress{Davis Centre, University of Waterloo}
|
|---|
| 17 | \city{Waterloo}
|
|---|
| 18 | \state{ON}
|
|---|
| 19 | \postcode{N2L 3G1}
|
|---|
| 20 | \country{Canada}
|
|---|
| 21 | }
|
|---|
| 22 | \email{a3moss@uwaterloo.ca}
|
|---|
| 23 |
|
|---|
| 24 | \terms{generic, types}
|
|---|
| 25 | \keywords{generic types, polymorphic functions, Cforall}
|
|---|
| 26 |
|
|---|
| 27 | \begin{CCSXML}
|
|---|
| 28 | <ccs2012>
|
|---|
| 29 | <concept>
|
|---|
| 30 | <concept_id>10011007.10011006.10011008.10011024.10011025</concept_id>
|
|---|
| 31 | <concept_desc>Software and its engineering~Polymorphism</concept_desc>
|
|---|
| 32 | <concept_significance>500</concept_significance>
|
|---|
| 33 | </concept>
|
|---|
| 34 | <concept>
|
|---|
| 35 | <concept_id>10011007.10011006.10011008.10011024.10011028</concept_id>
|
|---|
| 36 | <concept_desc>Software and its engineering~Data types and structures</concept_desc>
|
|---|
| 37 | <concept_significance>500</concept_significance>
|
|---|
| 38 | </concept>
|
|---|
| 39 | <concept>
|
|---|
| 40 | <concept_id>10011007.10011006.10011041.10011047</concept_id>
|
|---|
| 41 | <concept_desc>Software and its engineering~Source code generation</concept_desc>
|
|---|
| 42 | <concept_significance>300</concept_significance>
|
|---|
| 43 | </concept>
|
|---|
| 44 | </ccs2012>
|
|---|
| 45 | \end{CCSXML}
|
|---|
| 46 |
|
|---|
| 47 | \ccsdesc[500]{Software and its engineering~Polymorphism}
|
|---|
| 48 | \ccsdesc[500]{Software and its engineering~Data types and structures}
|
|---|
| 49 | \ccsdesc[300]{Software and its engineering~Source code generation}
|
|---|
| 50 |
|
|---|
| 51 | % \abstract{Abstract goes here.}
|
|---|
| 52 | \begin{abstract}
|
|---|
| 53 | \TODO{} Write abstract.
|
|---|
| 54 | \end{abstract}
|
|---|
| 55 |
|
|---|
| 56 | \begin{document}
|
|---|
| 57 |
|
|---|
| 58 | \maketitle
|
|---|
| 59 |
|
|---|
| 60 | \section{Introduction \& Background}
|
|---|
| 61 | \CFA{}\footnote{Pronounced ``C-for-all'', and written \CFA{} or Cforall.} is an evolutionary modernization of the C programming language which aims to add modern language features to C while maintaining both source compatibility with C and a familiar mental model for programmers. This paper describes how generic types are designed and implemented in \CFA{}, and how they interact with \CFA{}'s polymorphic functions.
|
|---|
| 62 |
|
|---|
| 63 | \CFA{}'s polymorphism was originally formalized by \citet{Ditchfield92}, and first implemented by \citet{Bilson03}.
|
|---|
| 64 |
|
|---|
| 65 | \bibliographystyle{ACM-Reference-Format}
|
|---|
| 66 | \bibliography{generic_types}
|
|---|
| 67 |
|
|---|
| 68 | \end{document}
|
|---|