A frequent programming pattern for small tasks, especially expressions, is to repeatedly evaluate the program on an input as its editing progresses. The Read-Eval-Print Loop (REPL) interaction model has been a successful model for this programming pattern. We present the new notion of Read-Eval-Synth Loop (RESL) that extends REPL by providing in-place synthesis on parts of the expression marked by the user. RESL eases programming by synthesizing parts of a required solution. The underlying synthesizer relies on a partial solution from the programmer and a few examples. RESL hinges on bottom-up synthesis with general predicates and sketching, generalizing programming by example. To make RESL practical, we present a formal framework that ext...
We develop an explicit two level system that allows programmers to reason about the behavior of effe...
Building systems that can synthesize programs from natural specifications (such as examples or langu...
Exploratory programming is a form of incremental program development in which the programmer can try...
Read-eval-print-loops (REPLs) allow programmers to test out snippets of code, explore APIs, or even ...
© 2019 Neural information processing systems foundation. All rights reserved. We present a neural pr...
The Spoofax Language Workbench supports the definition of all aspects of textual languages using hig...
Thesis (Ph.D.)--University of Washington, 2015Program synthesis is a family of techniques that gener...
Program synthesis is expanding rapidly and getting a lot of attention from both industry and aca...
Program synthesis is a promising area of research concerned with automatically producing program imp...
Motivated by improvements in constraint-solving technology and by the increase of routinely availabl...
Parsers – programs that extract structure from strings – are fundamental components of many software...
Thesis: Ph. D., Massachusetts Institute of Technology, Department of Electrical Engineering and Comp...
Due to the ubiquity of computing, programming has started to become an essential skill for an increa...
Lisp programmers constantly carry out experiments in a read-eval-print loop. The experimental activi...
We motivate the integration of programming by example and natural language programming by developing...
We develop an explicit two level system that allows programmers to reason about the behavior of effe...
Building systems that can synthesize programs from natural specifications (such as examples or langu...
Exploratory programming is a form of incremental program development in which the programmer can try...
Read-eval-print-loops (REPLs) allow programmers to test out snippets of code, explore APIs, or even ...
© 2019 Neural information processing systems foundation. All rights reserved. We present a neural pr...
The Spoofax Language Workbench supports the definition of all aspects of textual languages using hig...
Thesis (Ph.D.)--University of Washington, 2015Program synthesis is a family of techniques that gener...
Program synthesis is expanding rapidly and getting a lot of attention from both industry and aca...
Program synthesis is a promising area of research concerned with automatically producing program imp...
Motivated by improvements in constraint-solving technology and by the increase of routinely availabl...
Parsers – programs that extract structure from strings – are fundamental components of many software...
Thesis: Ph. D., Massachusetts Institute of Technology, Department of Electrical Engineering and Comp...
Due to the ubiquity of computing, programming has started to become an essential skill for an increa...
Lisp programmers constantly carry out experiments in a read-eval-print loop. The experimental activi...
We motivate the integration of programming by example and natural language programming by developing...
We develop an explicit two level system that allows programmers to reason about the behavior of effe...
Building systems that can synthesize programs from natural specifications (such as examples or langu...
Exploratory programming is a form of incremental program development in which the programmer can try...