Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleOctober 2023
How Domain Experts Use an Embedded DSL
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 275, Pages 1499–1530https://doi.org/10.1145/3622851Programming tools are increasingly integral to research and analysis in myriad domains, including specialized areas with no formal relation to computer science. Embedded domain-specific languages (eDSLs) have the potential to serve these programmers ...
Getting into the Flow: Towards Better Type Error Messages for Constraint-Based Type Inference
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 237, Pages 431–459https://doi.org/10.1145/3622812Creating good type error messages for constraint-based type inference systems is difficult. Typical type error messages reflect implementation details of the underlying constraint-solving algorithms rather than the specific factors leading to type ...
Grounded Copilot: How Programmers Interact with Code-Generating Models
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA1Article No.: 78, Pages 85–111https://doi.org/10.1145/3586030Powered by recent advances in code-generating models, AI assistants like Github Copilot promise to change the face of programming forever. But what is this new face of programming? We present the first grounded theory analysis of how programmers interact ...
Comparative Synthesis: Learning Near-Optimal Network Designs by Query
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue POPLArticle No.: 4, Pages 91–120https://doi.org/10.1145/3571197When managing wide-area networks, network architects must decide how to balance multiple conflicting metrics, and ensure fair allocations to competing traffic while prioritizing critical traffic. The state of practice poses challenges since architects ...
- research-articleOctober 2021
How statically-typed functional programmers write code
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 155, Pages 1–30https://doi.org/10.1145/3485532How working statically-typed functional programmers write code is largely understudied. And yet, a better understanding of developer practices could pave the way for the design of more useful and usable tooling, more ergonomic languages, and more ...
LooPy: interactive program synthesis with control structures
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 153, Pages 1–29https://doi.org/10.1145/3485530One vision for program synthesis, and specifically for programming by example (PBE), is an interactive programmer's assistant, integrated into the development environment. To make program synthesis practical for interactive use, prior work on Small-Step ...
Adding interactive visual syntax to textual code
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 222, Pages 1–28https://doi.org/10.1145/3428290Many programming problems call for turning geometrical thoughts into code: tables, hierarchical structures, nests of objects, trees, forests, graphs, and so on. Linear text does not do justice to such thoughts. But, it has been the dominant programming ...
- research-articleNovember 2020
Digging for fold: synthesis-aided API discovery for Haskell
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 205, Pages 1–27https://doi.org/10.1145/3428273We present Hoogle+, a web-based API discovery tool for Haskell. A Hoogle+ user can specify a programming task using either a type, a set of input-output tests, or both. Given a specification, the tool returns a list of matching programs composed from ...
- research-articleNovember 2020
Interactive synthesis of temporal specifications from examples and natural language
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 201, Pages 1–26https://doi.org/10.1145/3428269Motivated by applications in robotics, we consider the task of synthesizing linear temporal logic (LTL) specifications based on examples and natural language descriptions. While LTL is a flexible, expressive, and unambiguous language to describe robotic ...
- research-articleNovember 2020
Can advanced type systems be usable? An empirical study of ownership, assets, and typestate in Obsidian
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 132, Pages 1–28https://doi.org/10.1145/3428200Some blockchain programs (smart contracts) have included serious security vulnerabilities. Obsidian is a new typestate-oriented programming language that uses a strong type system to rule out some of these vulnerabilities. Although Obsidian was designed ...
- research-articleJune 2020
A history of the Oz multiparadigm language
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue HOPLArticle No.: 83, Pages 1–56https://doi.org/10.1145/3386333Oz is a programming language designed to support multiple programming paradigms in a clean factored way that is easy to program despite its broad coverage. It started in 1991 as a collaborative effort by the DFKI (Germany) and SICS (Sweden) and led to an ...
Executable formal semantics for the POSIX shell
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue POPLArticle No.: 43, Pages 1–30https://doi.org/10.1145/3371111The POSIX shell is a widely deployed, powerful tool for managing computer systems. The shell is the expert’s control panel, a necessary tool for configuring, compiling, installing, maintaining, and deploying systems. Even though it is powerful, critical ...
- research-articleOctober 2018
Robust relational layout synthesis from examples for Android
Proceedings of the ACM on Programming Languages (PACMPL), Volume 2, Issue OOPSLAArticle No.: 156, Pages 1–29https://doi.org/10.1145/3276526We present a novel approach for synthesizing robust relational layouts from examples. Given an application design consisting of a set of views and their location on the screen, we synthesize a relational layout that when rendered, places the components ...
- research-articleOctober 2018
Bidirectional evaluation with direct manipulation
Proceedings of the ACM on Programming Languages (PACMPL), Volume 2, Issue OOPSLAArticle No.: 127, Pages 1–28https://doi.org/10.1145/3276497We present an evaluation update (or simply, update) algorithm for a full-featured functional programming language, which synthesizes program changes based on output changes. Intuitively, the update algorithm retraces the steps of the original evaluation, ...
- research-articleOctober 2017
SQLizer: query synthesis from natural language
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue OOPSLAArticle No.: 63, Pages 1–26https://doi.org/10.1145/3133887This paper presents a new technique for automatically synthesizing SQL queries from natural language (NL). At the core of our technique is a new NL-based program synthesis methodology that combines semantic parsing techniques from the NLP community with ...
Super 8 languages for making movies (functional pearl)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue ICFPArticle No.: 30, Pages 1–29https://doi.org/10.1145/3110274The Racket doctrine tells developers to narrow the gap between the terminology of a problem domain and general programming constructs by creating languages instead of just plain programs. This pearl illustrates this point with the creation of a ...
- research-articleAugust 2017
Testing and debugging functional reactive programming
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue ICFPArticle No.: 2, Pages 1–27https://doi.org/10.1145/3110246Many types of interactive applications, including video games, raise particular challenges when it comes to testing and debugging. Reasons include de-facto lack of reproducibility and difficulties of automatically generating suitable test data. This ...