Complete completion using types and weights
Autor: | KurajIvan, KuncakViktor, PiskacRuzica, GveroTihomir |
---|---|
Rok vydání: | 2013 |
Předmět: |
Theoretical computer science
Computer science Scala code completion computer.software_genre Task (project management) program synthesis Ranking (information retrieval) type-driven synthesis Software ranking Plug-in Eclipse computer.programming_language Type inhabitation type inhabitation business.industry Programming language Rank (computer programming) Computer Graphics and Computer-Aided Design Expression (mathematics) Languages Software engineering business Lambda calculus computer Algorithms Program synthesis |
Zdroj: | PLDI |
DOI: | 10.1145/2491956.2462192 |
Popis: | 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 equivalence classes to reduce the search space, then reconstructs any desired number of solutions on demand. Furthermore, we introduce a method to rank solutions based on weights derived from a corpus of code. We implemented the algorithm and deployed it as a plugin for the Eclipse IDE for Scala. We show that the techniques we incorporated greatly increase the effectiveness of the approach. Our evaluation benchmarks are code examples from programming practice; we make them available for future comparisons. |
Databáze: | OpenAIRE |
Externí odkaz: |