22 citations · 27 across the 5 of their papers we have counts for
6 papers · 1 filter
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…
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…
A Grounded Conceptual Model for Ownership Types in Rust
Will Crichton, Gavin Gray, Shriram Krishnamurthi
Programmers learning Rust struggle to understand ownership types, Rust's core mechanism for ensuring memory safety without garbage collection. This paper describes our attempt to s…
Typed Design Patterns for the Functional Era
Will Crichton
This paper explores how design patterns could be revisited in the era of mainstream functional programming languages. I discuss the kinds of knowledge that ought to be represented…