UC San Diego
Front-end tooling for building and maintaining dependently-typed functional programs
- Author(s): Robert, Valentin
- Advisor(s): Lerner, Sorin
- et al.
Dependently-typed functional languages are increasingly popular, but due to the complexity of their type systems, there is still a lot of friction in the user experience, both for beginners who try to learn the concepts, and expert users who must write and maintain complex code bases. We explore ways to alleviate those burdens by providing novel front-end tooling for this class of languages.
In order to help beginners, we explore new visualizations and automation techniques, focusing on three pain points we identified in the learning process. We evaluate, via a longitudinal user study and an A-B study, their effectiveness in terms of learning to use those languages, enjoyment of the learning process, and productivity on solving beginner-level exercises.
In order to help experts, we prototype a tool that helps in the refactoring of programs, partially eliminating the tedium of propagating changes throughout large code bases. Our tool is built around a small dependently-typed functional core language, but it supports extensions to richer languages, with similar or weaker type systems. We demonstrate this by extending it to support OCaml, a widely used, modern functional language without dependent types.