Zeng for pro bono artistic services; and YoungSeok Yoon
for reanalyzing the data from [
67
]. This work was partially
funded through a gift from Mozilla; the NSF grant #CCF-
1619282, 1553741 and 1439957; by AFRL and DARPA under
agreement #FA8750-16-2-0042; and by NSA lablet contract
#H98230-14-C-0140.
References
[1]
Typed holes in GHC.
https://wiki.haskell.org/GHC/Typed_
holes. Retrieved Nov. 7, 2016.
[2]
A. Altadmri and N. C. Brown. 37 Million Compilations: Inves-
tigating Novice Programming Mistakes in Large-Scale Student
Data. In ACM Technical Symposium on Computer Science Education
(SIGCSE), 2015.
[3]
L. E. d. S. Amorim, S. Erdweg, G. Wachsmuth, and E. Visser.
Principled syntactic code completion using placeholders. In SLE,
2016.
[4]
V. Balat. Ocsigen: Typing Web Interaction with Objective Caml.
In ACM Workshop on ML, 2006.
[5]
P. Borras, D. Cl
´
ement, T. Despeyroux, J. Incerpi, G. Kahn, B. Lang,
and V. Pascual. CENTAUR: The System. In Proceedings of the
ACM SIGSOFT/SIGPLAN Software Engineering Symposium on
Practical Software Development Environments, pages 14–24, 1988.
[6]
E. Brady. Idris, A General-Purpose Dependently Typed Pro-
gramming Language: Design and Implementation. Journal of
Functional Programming, 23(05):552–593, 2013.
[7]
S. Burckhardt, M. F
¨
ahndrich, P. de Halleux, S. McDirmid,
M. Moskal, N. Tillmann, and J. Kato. It’s alive! continuous feed-
back in UI programming. In PLDI, 2013.
[8]
P. Chiusano. Unison.
http://www.unisonweb.org/
. Accessed:
2016-04-25.
[9]
A. Chlipala, L. Petersen, and R. Harper. Strict bidirectional type
checking. In ACM SIGPLAN International Workshop on Types in
Languages Design and Implementation (TLDI), 2005.
[10]
D. R. Christiansen. Bidirectional Typing Rules: A Tutorial.
http:
//davidchristiansen.dk/tutorials/bidirectional.pdf
,
2013.
[11]
M. Cimini and J. G. Siek. The gradualizer: a methodology and
algorithm for generating gradual type systems. In POPL, 2016.
[12]
M. Conway, S. Audia, T. Burnette, D. Cosgrove, and K. Chris-
tiansen. Alice: Lessons Learned from Building a 3D System for
Novices. In SIGCHI Conference on Human Factors in Computing
Systems (CHI), 2000.
[13]
L. Damas and R. Milner. Principal type-schemes for functional
programs. In POPL, 1982.
[14]
R. Davies and F. Pfenning. Intersection types and computational
effects. In ICFP, 2000.
[15]
M. de Jonge, E. Nilsson-Nyman, L. C. L. Kats, and E. Visser.
Natural and flexible error recovery for generated parsers. In SLE,
2009.
[16]
J. Dunfield and N. R. Krishnaswami. Complete and easy bidi-
rectional typechecking for higher-rank polymorphism. In ICFP,
2013.
[17] C. Elliott. Tangible Functional Programming. In ICFP, 2007.
[18]
R. Garcia and M. Cimini. Principal Type Schemes for Gradual
Programs. In POPL, 2015.
[19]
R. Garcia, A. M. Clark, and E. Tanter. Abstracting gradual typing.
In POPL, 2016.
[20]
D. B. Garlan and P. L. Miller. GNOME: An introductory pro-
gramming environment based on a family of structure editors. In
First ACM SIGSOFT/SIGPLAN Software Engineering Symposium
on Practical Software Development Environments, 1984.
[21]
M. Gordon, R. Milner, L. Morris, M. Newey, and C. Wadsworth.
A metalanguage for interactive proof in LCF. In POPL, 1978.
[22]
R. Harper. Practical Foundations for Programming Languages. 2nd
edition, 2016. URL
https://www.cs.cmu.edu/
~
rwh/plbook/
2nded.pdf.
[23]
R. Harper and C. Stone. A Type-Theoretic Interpretation of
Standard ML. In Proof, Language and Interaction: Essays in Honour
of Robin Milner. MIT Press, 2000.
[24]
G. J. Holzmann. Brace yourself. IEEE Software, 33(5):34–37, Sept
2016. ISSN 0740-7459. doi: 10.1109/MS.2016.123.
[25]
G. Huet. The Zipper. Journal of Functional Programming, 7(5),
Sept. 1997. Functional Pearl.
[26]
D. Jones. Developer beliefs about binary operator precedence. C
Vu, 18(4):14–21, 2006.
[27]
L. C. L. Kats, M. de Jonge, E. Nilsson-Nyman, and E. Visser.
Providing rapid feedback in generated modular language envi-
ronments: adding error recovery to scannerless generalized-LR
parsing. In OOPSLA, 2009.
[28]
A. J. Ko and B. A. Myers. Barista: An Implementation Framework
for Enabling New Tools, Interaction Techniques and Views
in Code Editors. In SIGCHI Conference on Human Factors in
Computing Systems (CHI), 2006.
[29]
D. K. Lee, K. Crary, and R. Harper. Towards a mechanized
metatheory of Standard ML. In POPL, 2007.
[30]
S. Lee and D. P. Friedman. Enriching the Lambda Calculus with
Contexts: Toward a Theory of Incremental Program Construction.
In ICFP, 1996.
[31]
S. Lerner, S. R. Foster, and W. G. Griswold. Polymorphic blocks:
Formalism-inspired UI for structured connectors. In ACM
Conference on Human Factors in Computing Systems (CHI), 2015.
[32]
D. R. Licata and R. Harper. A Universe of Binding and Compu-
tation. In ICFP, 2009.
[33]
E. Lotem and Y. Chuchem. Project Lamdu.
http://www.lamdu.
org/. Accessed: 2016-04-08.
[34]
G. Marceau, K. Fisler, and S. Krishnamurthi. Do values grow
on trees?: Expression integrity in functional programming. In
Seventh International Workshop on Computing Education Research
(ICER), 2011.
[35]
C. McBride. Dependently typed functional programs and their proofs.
PhD thesis, University of Edinburgh. College of Science and
Engineering. School of Informatics., 2000.
[36]
T. Mens and T. Tourw
´
e. A survey of software refactoring. IEEE
Transactions on Software Engineering, 30(2):126–139, 2004.
[37]
R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition
of Standard ML (Revised). The MIT Press, 1997.
[38]
M. Minsky. Form and content in computer science (1970 ACM
Turing Lecture). J. ACM, 17(2):197–215, 1970.
[39] M. Mooty, A. Faulring, J. Stylos, and B. A. Myers. Calcite: Com-
pleting code completion for constructors using crowds. In IEEE
Symposium on Visual Languages and Human-Centric Computing
(VL/HCC), 2010.
[40]
A. Nanevski, F. Pfenning, and B. Pientka. Contextual modal type
theory. ACM Trans. Comput. Log., 9(3), 2008.
[41]
U. Norell. Towards a practical programming language based on
dependent type theory. PhD thesis, Department of Computer
Science and Engineering, Chalmers University of Technology,
SE-412 96 G
¨
oteborg, Sweden, September 2007.
[42]
M. Odersky, C. Zenger, and M. Zenger. Colored local type
inference. In POPL, 2001.
[43]
C. Omar, Y. Yoon, T. D. LaToza, and B. A. Myers. Active code
completion. In ICSE, 2012.
[44]
C. Omar, D. Kurilova, L. Nistor, B. Chung, A. Potanin, and
J. Aldrich. Safely composable type-specific languages. In ECOOP,
2014.
[45]
P. Osera and S. Zdancewic. Type-and-example-directed program
synthesis. In PLDI, 2015.