Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages 2017
DOI: 10.1145/3009837.3009900
|View full text |Cite
|
Sign up to set email alerts
|

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.This paper introduces Hazelnut, a structure editor based on a small bidirectionally typed lambda calculus extended with holes and a cursor. Hazelnut goes one step beyond syntactic well-formedness: its edit actions operate over statica… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
38
0

Year Published

2017
2017
2022
2022

Publication Types

Select...
4
3

Relationship

3
4

Authors

Journals

citations
Cited by 25 publications
(39 citation statements)
references
References 75 publications
(90 reference statements)
0
38
0
Order By: Relevance
“…"extract variable" has no effect on the result; "change constant value" forces recomputation of subsequent code). This can be elegantly implemented using bi-directional lambda calculus [43], but it also makes us consider more human-centric abstractions [14,15] further discussed in appendix D.…”
Section: Related and Future Workmentioning
confidence: 99%
“…"extract variable" has no effect on the result; "change constant value" forces recomputation of subsequent code). This can be elegantly implemented using bi-directional lambda calculus [43], but it also makes us consider more human-centric abstractions [14,15] further discussed in appendix D.…”
Section: Related and Future Workmentioning
confidence: 99%
“…We start with the type system of the Hazelnut Live external language, which closely follows the Hazelnut type system [Omar et al 2017a]; we summarize the minor differences as they come up. The type synthesis judgement Γ ⊢ e ⇒ τ synthesizes a type τ for external expression e under typing context Γ, which tracks typing assumptions of the form x : τ in the usual manner [Harper 2016;Pierce 2002].…”
Section: Static Semantics Of the External Languagementioning
confidence: 99%
“…Throughout the process of addressing these errors, which can sometimes span many days, the program text remains formally meaningless. About 40% of edits performed by Java programmers using Eclipse left the program text malformed [Omar et al 2017a] and some additional number, which could not be determined from the data gathered by Yoon and Myers [2014], were well-formed but ill-typed.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation
“…As future work, we will extend HFI into an interactive program editor, based on our existing bidirectional type system, and the (typed) structure editor approach developed by Omar et al [2017a]. We speculate that Fungi itself may be useful in the implementation of this tool, by providing language support for interactive, incremental developer features [Omar et al 2017b].…”
Section: Prototype In Rustmentioning
confidence: 99%