22 citations · 30 across the 8 of their papers we have counts for
7 papers · 1 filter
A Design Space Exploration of Async/Await
Gavin Gray, Shriram Krishnamurthi, Will Crichton
Many modern programming languages include some form of asynchronous programming. In particular, a growing number now have what we call straight-line asynchrony: attempts to provide…
An Interactive Debugger for Rust Trait Errors
Gavin Gray, Will Crichton, Shriram Krishnamurthi
Compiler diagnostics for type inference failures are notoriously bad, and type classes only make the problem worse. By introducing a complex search process during inference, type c…
WatChat: Explaining perplexing programs by debugging mental models
Kartik Chandra, Katherine M. Collins, Will Crichton +6
Often, a good explanation for a program's unexpected behavior is a bug in the programmer's code. But sometimes, an even better explanation is a bug in the programmer's mental model…
Profiling Programming Language Learning
Will Crichton, Shriram Krishnamurthi
This paper documents a year-long experiment to "profile" the process of learning a programming language: gathering data to understand what makes a language hard to learn, and using…
A Core Calculus for Documents
Will Crichton, Shriram Krishnamurthi
Passive documents and active programs now widely comingle. Document languages include Turing-complete programming elements, and programming languages include sophisticated document…
Debugging Trait Errors as Logic Programs
Gavin Gray, Will Crichton
Rust uses traits to define units of shared behavior. Trait constraints build up an implicit set of first-order hereditary Harrop clauses which is executed by a powerful logic progr…