Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Ian Voysey

dblp:183/6654 · DBLP profile ↗
← Back
3ranked-venue papers
0as first author
1since 2021 · last 2021
0000-0002-6041-2010ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 1 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Programming languages and type systems · 82% Program synthesis and code generation · 18%
Human-computer interaction and pervasive computing
1 paper
User interface design and tools · 100%

Topics — the 6 heaviest of 8, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › language semantics
dynamic semantics
0.412019
Live functional programming with typed holes · Proc. ACM Program. Lang. 2019
Programming languages and type systems › type systems
gradual typing
0.412019
Live functional programming with typed holes · Proc. ACM Program. Lang. 2019
Programming languages and type systems › type checking
bidirectional type checking
0.312017
Hazelnut: a bidirectionally typed structure editor calculus · POPL 2017
Programming languages and type systems › programming environment
structure editors
0.312017
Hazelnut: a bidirectionally typed structure editor calculus · POPL 2017
User interface design and tools › interactive graphics system
graphical editing
0.112021
Filling typed holes with live GUIs · PLDI 2021
Programming languages and type systems › type systems
type soundness
0.112019
Live functional programming with typed holes · Proc. ACM Program. Lang. 2019

Methods — techniques the papers use, named apart from their topics

mechanized metatheory · 1.4simply typed calculus · 1.0macro expansion · 1.0agda proof assistant · 0.4
YearPublicationVenuePosition
2021 Filling typed holes with live GUIs
abstract
Text editing is powerful, but some types of expressions are more naturally represented and manipulated graphically. Examples include expressions that compute colors, music, animations, tabular data, plots, diagrams, and other domain-specific data structures. This paper introduces live literals, or livelits, which allow clients to fill holes of types like these by directly manipulating a user-defined GUI embedded persistently into code. Uniquely, livelits are compositional: a livelit GUI can itself embed spliced expressions, which are typed, lexically scoped, and can in turn embed other livelits. Livelits are also uniquely live: a livelit can provide continuous feedback about the run-time implications of the client’s choices even when splices mention bound variables, because the system continuously gathers closures associated with the hole that the livelit is filling. We integrate livelits into Hazel, a live hole-driven programming environment, and describe case studies that exercise these novel capabilities. We then define a simply typed livelit calculus, which specifies how livelits operate as live graphical macros. The metatheory of macro expansion has been mechanized in Agda.
Cyrus Omar, David Moon, Andrew Blinn, Ian Voysey, Nick Collins, Ravi Chugh
PLDI4
2019 Live functional programming with typed holes
abstract
Live programming environments aim to provide programmers (and sometimes audiences) with continuous feedback about a program's dynamic behavior as it is being edited. The problem is that programming languages typically assign dynamic meaning only to programs that are complete, i.e. syntactically well-formed and free of type errors. Consequently, live feedback presented to the programmer exhibits temporal or perceptive gaps. This paper confronts this "gap problem" from type-theoretic first principles by developing a dynamic semantics for incomplete functional programs, starting from the static semantics for incomplete functional programs developed in recent work on Hazelnut. We model incomplete functional programs as expressions with holes, with empty holes standing for missing expressions or types, and non-empty holes operating as membranes around static and dynamic type inconsistencies. Rather than aborting when evaluation encounters any of these holes as in some existing systems, evaluation proceeds around holes, tracking the closure around each hole instance as it flows through the remainder of the program. Editor services can use the information in these hole closures to help the programmer develop and confirm their mental model of the behavior of the complete portions of the program as they decide how to fill the remaining holes. Hole closures also enable a fill-and-resume operation that avoids the need to restart evaluation after edits that amount to hole filling. Formally, the semantics borrows machinery from both gradual type theory (which supplies the basis for handling unfilled type holes) and contextual modal type theory (which supplies a logical basis for hole closures), combining these and developing additional machinery necessary to continue evaluation past holes while maintaining type safety. We have mechanized the metatheory of the core calculus, called Hazelnut Live, using the Agda proof assistant. We have also implemented these ideas into the Hazel programming environment. The implementation inserts holes automatically, following the Hazelnut edit action calculus, to guarantee that every editor state has some (possibly incomplete) type. Taken together with this paper's type safety property, the result is a proof-of-concept live programming environment where rich dynamic feedback is truly available without gaps, i.e. for every reachable editor state.
Cyrus Omar, Ian Voysey, Ravi Chugh, Matthew A. Hammer
Proc. ACM Program. Lang.2
2017 Hazelnut: a bidirectionally typed structure editor calculus
abstract
Structure editors allow programmers to edit the tree structure of a program directly. This can have cognitive benefits, particularly for novice and end-user programmers. It also simplifies matters for tool designers, because they do not need to contend with malformed program text.
Cyrus Omar, Ian Voysey, Michael Hilton 0001, Jonathan Aldrich, Matthew A. Hammer
POPL2