2013
DOI: 10.1145/2499370.2462192
|View full text |Cite
|
Sign up to set email alerts
|

Complete completion using types and weights

Abstract: Developing modern software typically involves composing functionality from existing libraries. This task is difficult because libraries may expose many methods to the developer. To help developers in such scenarios, we present a technique that synthesizes and suggests valid expressions of a given type at a given program point. As the basis of our technique we use type inhabitation for lambda calculus terms in long normal form. We introduce a succinct representation for type judgements that merges types into eq… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
41
0

Year Published

2013
2013
2021
2021

Publication Types

Select...
5
3

Relationship

3
5

Authors

Journals

citations
Cited by 37 publications
(41 citation statements)
references
References 22 publications
0
41
0
Order By: Relevance
“…Hence, based on definitions in a library a new sequence of expressions is synthesized that uses the input values from the query, executes the desired effect and returns a value of the expected type. Some recent work on this topic is Scala InSynth [GKKP13] and CodeHint [GRB + 14].…”
Section: Program Synthesis Toolsmentioning
confidence: 99%
“…Hence, based on definitions in a library a new sequence of expressions is synthesized that uses the input values from the query, executes the desired effect and returns a value of the expected type. Some recent work on this topic is Scala InSynth [GKKP13] and CodeHint [GRB + 14].…”
Section: Program Synthesis Toolsmentioning
confidence: 99%
“…There are several tools that find, rank and present the most appropriated synthesized code portions to the programmer. InSynth [9] is an IDE extension which allows users to synthesize code snippets based on the type of the current expression. Although these approaches are not completely automatic due to the lack of complete specifications, they reduce the burden of the programmer.…”
Section: Related Workmentioning
confidence: 99%
“…A promising approach to realize these goals is to empower users themselves to program, blurring the traditional divide between professional software developers and end users. This direction is especially appealing as the increasing computing capabilities of these ubiquitous devices enable more advanced runtimes and software development tools, and as new algorithmic techniques enable automated programming assistance and synthesis [8,9,13,20,22].…”
Section: Introductionmentioning
confidence: 99%
“…Automated data structure generation techniques are useful in many contexts: software testing [10,11,18,45], synthesis [30,32], bounded and unbounded verification [3,15,25,28], theorem proving [6,12], and others [4,9,22,24,31]. The structures in question are not just the common algorithmic data structures that are the backbone of common libraries, but also domain-specific structures, such as abstract models of programs in compilers, image formats, or DOM trees in browsers.…”
Section: Introductionmentioning
confidence: 99%
“…Different generation techniques provide different sets of features. While some techniques rely on a costly generate-and-test approach [22,32,42], efficient techniques usually avoid explicit enumeration of all possible structures [13,28,43]. Most of the prior work employs some form of backtracking: with a constraint solver [28,40,43], using custom search [4,40], or non-deterministic execution [18].…”
Section: Introductionmentioning
confidence: 99%