A programmer’s primary tools are still a text editor and a compiler or interpreter. Certainly, today’s text editors have been enhanced with impressive capabilities for managing, comprehending, refactoring, and re-using code. But what if our editing actions followed the semantics of our languages? We know that type-safety guarantees that many programming errors will be caught before the program is run. But can we give the programmer the comfort that all of his editing operations produce valid programs? Might we be able to offer correct actions to the programmer, thus avoiding the frustration of following a software suggestion that turns out to be incorrect, and without explanation? Can we make the process of editing programs high-level as we make our languages high-level?

I present the direction of my research into type-directed editing, and in particular I propose “wearing the hair shirt”, attempting to program using only type-directed edits in order to understand the benefits and difficulties, and to understand what tools and editing capabilities are necessary for type-directed editing to be a useful programming UI model.