-
Notifications
You must be signed in to change notification settings - Fork 0
/
pldi19.tex
303 lines (271 loc) · 10.2 KB
/
pldi19.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
%% Note: Authors migrating a paper from PACMPL format to traditional
%% SIGPLAN proceedings format should change 'acmlarge' to
%% 'sigplan,10pt'.
%% For double-blind review submission, w/o CCS and ACM Reference (max submission space)
%PLDI
%\documentclass[sigplan,review,anonymous]{acmart}\settopmatter{printfolios=true,printccs=false,printacmref=false}
%OOPSLA
\documentclass[acmsmall,review,anonymous]{acmart}\settopmatter{printfolios=true,printccs=false,printacmref=false}
%% For double-blind review submission, w/ CCS and ACM Reference
%\documentclass[sigplan,review,anonymous]{acmart}\settopmatter{printfolios=true}
%% For single-blind review submission, w/o CCS and ACM Reference (max submission space)
%\documentclass[sigplan,review]{acmart}\settopmatter{printfolios=true,printccs=false,printacmref=false}
%% For single-blind review submission, w/ CCS and ACM Reference
%\documentclass[sigplan,review]{acmart}\settopmatter{printfolios=true}
%% For final camera-ready submission, w/ required CCS and ACM Reference
%\documentclass[sigplan]{acmart}\settopmatter{}
\renewcommand\footnotetextcopyrightpermission[1]{} % removes footnote with confe%% Journal information
\newcommand{\PAPER}{}
\newcommand{\either}[2]{#2}
%% Some recommended packages.
%\usepackage{booktabs} %% For formal tables:
% %% http://ctan.org/pkg/booktabs
%\usepackage{subcaption} %% For complex figures with subfigures/subcaptions
% %% http://ctan.org/pkg/subcaption
\usepackage{esop-common}
\usepackage{infer-common}
\usepackage{quals-common}
%\makeatletter\if@ACM@journal\makeatother
%%% Journal information (used by PACMPL format)
%%% Supplied to authors by publisher for camera-ready submission
%\acmJournal{PACMPL}
%\acmVolume{1}
%\acmNumber{1}
%\acmArticle{1}
%\acmYear{2017}
%\acmMonth{1}
%\acmDOI{10.1145/nnnnnnn.nnnnnnn}
%\startPage{1}
%\else\makeatother
%%% Conference information (used by SIGPLAN proceedings format)
%%% Supplied to authors by publisher for camera-ready submission
%\acmConference[PL'17]{ACM SIGPLAN Conference on Programming Languages}{January 01--03, 2017}{New York, NY, USA}
%\acmYear{2017}
%\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
%\acmDOI{10.1145/nnnnnnn.nnnnnnn}
%\startPage{1}
%\fi
%% Copyright information
%% Supplied to authors (based on authors' rights management selection;
%% see authors.acm.org) by publisher for camera-ready submission
\setcopyright{none} %% For review submission
%\setcopyright{acmcopyright}
%\setcopyright{acmlicensed}
%\setcopyright{rightsretained}
%\copyrightyear{2017} %% If different from \acmYear
%% Bibliography style
\bibliographystyle{ACM-Reference-Format}
%% Citation style
%% Note: author/year citations are required for papers published as an
%% issue of PACMPL.
%\citestyle{acmauthoryear} %% For author/year citations
\begin{document}
%% Title information
%\title[Short Title]{Full Title} %% [Short Title] is optional;
% %% when present, will be used in
% %% header instead of Full Title.
%\title{Dynamic Type Inference for Recursive Structural Types}
%\title{ from unit tests to generative tests and types}
%\title{Generating generative tests}
%\title{Generating generative tests, then types}
%\title{From tests, to generative tests and types, automatically}
%\title{Squash the work}
%\title{Squash the work: Generating useful optional types}
%\title{Squash the work! Automatic annotations for untyped languages}
\title{Squash the work!}
%\subtitle{Automatic annotations for untyped languages}
%\subtitle{Automatic Type Annotations for Optional Type Systems from Plain Recursive Data}
%\subtitle{Automatic Type Annotations from Plain, Recursive Data}
\subtitle{Inferring Recursive Type Annotations from Plain Data for Optional Type Systems}
%\subtitle{Automatic Recursive Type Annotations from Plain Data}
%\title{Generating useful types for optionally typed languages}
%\subtitle{Generating useful optional types}
%\subtitle{Ease the porting process}
%\titlenote{with title note} %% \titlenote is optional;
% %% can be repeated if necessary;
% %% contents suppressed with 'anonymous'
%\subtitle{Subtitle} %% \subtitle is optional
%\subtitlenote{with subtitle note} %% \subtitlenote is optional;
% %% can be repeated if necessary;
% %% contents suppressed with 'anonymous'
%% Author information
%% Contents and number of authors suppressed with 'anonymous'.
%% Each author should be introduced by \author, followed by
%% \authornote (optional), \orcid (optional), \affiliation, and
%% \email.
%% An author may have multiple affiliations and/or emails; repeat the
%% appropriate command.
%% Many elements are not rendered, but should be provided for metadata
%% extraction tools.
%% Author with single affiliation.
\author{Ambrose Bonnaire-Sergeant}
%\authornote{with author1 note} %% \authornote is optional;
%% can be repeated if necessary
%\orcid{nnnn-nnnn-nnnn-nnnn} %% \orcid is optional
\affiliation{
%\position{Position1}
\department{Computer Science} %% \department is recommended
\institution{Indiana University} %% \institution is required
%\streetaddress{Street1 Address1}
%\city{City1}
%\state{State1}
%\postcode{Post-Code1}
\country{USA}
}
\email{abonnair@iu.edu} %% \email is recommended
%% Author with two affiliations and emails.
\author{Sam Tobin-Hochstadt}
%\authornote{with author2 note} %% \authornote is optional;
%% can be repeated if necessary
%\orcid{nnnn-nnnn-nnnn-nnnn} %% \orcid is optional
\affiliation{
%\position{Position2a}
\department{Computer Science} %% \department is recommended
\institution{Indiana University} %% \institution is required
%\streetaddress{Street2a Address2a}
%\city{City2a}
%\state{State2a}
%\postcode{Post-Code2a}
\country{USA}
}
\email{samth@iu.edu} %% \email is recommended
%\affiliation{
% \position{Position2b}
% \department{Department2b} %% \department is recommended
% \institution{Institution2b} %% \institution is required
% \streetaddress{Street3b Address2b}
% \city{City2b}
% \state{State2b}
% \postcode{Post-Code2b}
% \country{Country2b}
%}
%\email{first2.last2@inst2b.org} %% \email is recommended
%% Paper note
%% The \thanks command may be used to create a "paper note" ---
%% similar to a title note or an author note, but not explicitly
%% associated with a particular element. It will appear immediately
%% above the permission/copyright statement.
%\thanks{with paper note} %% \thanks is optional
%% can be repeated if necesary
%% contents suppressed with 'anonymous'
%% Abstract
%% Note: \begin{abstract}...\end{abstract} environment must come
%% before \maketitle command
\begin{abstract}
\input{infer-abstract}
\end{abstract}
%% 2012 ACM Computing Classification System (CSS) concepts
%% Generate at 'http://dl.acm.org/ccs/ccs.cfm'.
%\begin{CCSXML}
%<ccs2012>
%<concept>
%<concept_id>10011007.10011006.10011008</concept_id>
%<concept_desc>Software and its engineering~General programming languages</concept_desc>
%<concept_significance>500</concept_significance>
%</concept>
%<concept>
%<concept_id>10003456.10003457.10003521.10003525</concept_id>
%<concept_desc>Social and professional topics~History of programming languages</concept_desc>
%<concept_significance>300</concept_significance>
%</concept>
%</ccs2012>
%\end{CCSXML}
%\ccsdesc[500]{Software and its engineering~General programming languages}
%\ccsdesc[300]{Social and professional topics~History of programming languages}
%% End of generated code
%% Keywords
%% comma separated list
%\keywords{keyword1, keyword2, keyword3} %% \keywords is optional
%% \maketitle
%% Note: \maketitle command must come after title commands, author
%% commands, abstract environment, Computing Classification System
%% environment and commands, and keywords command.
\maketitle
% Paper outline
%
% Introduction
% - set the scene for inferring types
% - Typed Clojure
% - optional/gradual typing requires annotations
% - give introductory example
% - generate types + specs
% - show delta needed to typecheck
% - enumerate our contributions
% - signpost the rest of the paper
% Overview
% - show off the inference algorithm
% - simple example
% - higher order functions
% - talk about join
% - talk about track
% - talk about update
% - maps
% - optional keys
% - when to throw away info
% - how to merge maps
% - recursive example
% - common keys
% - problems: multiple "tags"
% - names
% - alias names
% - map tags propagate down into names
% - spec names (using function arguments)
% - visualise recursive algorithm
% - horizonal + vertical squashing
% Formal model
% - semantics
% - track
% - union
% - join
% - update
% - type syntax
% Implementation
% - optimisations
% - depth limit
% - handling pre-existing annotations
% - spec generation
% Experience
% - experiments
% 1. manual inspection
% 2. Generate types + type check
% 3. Gen spec -> run spec -> run tests -> gen tests
% 4. Gen types -> gradual typing
% Related work
% - see runtime infer github
% Conclusion
\input{infer-intro}
\input{infer-overview}
%\input{infer-algorithm}
\input{infer-formalism}
\input{infer-extensions}
\input{infer-evaluation}
\input{infer-related-work}
% performance analysis vs Daikon
%\input{infer-comparison}
\input{infer-conclusion}
%\appendix
%\section{Appendix Title}
%\subsection{math.combinatorics}
%
%Problems:
%
%\begin{itemize}
% \item hard to annotate
% \item overly dynamic idioms
% \item polymorphism
%\end{itemize}
%
%\begin{verbatim}
%Issues
%- (partial map v)
% - too hard to infer
%- #(map v %) has no annotation generation
%- (apply concat ...) not inferring
%- permutations should be polymorphic
%- sorted-number? should infer a :then filter of (Coll Num)
%- `reductions` needs annotation
%- (every? seq ...) should generate good filter
%- many things should be polymorphic
%\end{verbatim}
\bibliography{bibliography}
\end{document}