Adding type systems to dynamically typed programming languages is a research topic with a 30 year history. With the wide-spread use of scripting languages -- many of which are dynamically typed -- this research agenda has gained a new urgency. It is thus a good time to stop and look back so that we don't repeat past mistakes in the future.
Over the past three decades, people have referred to the area by various names, including "Typed Lisp" and "broad-spectrum" languages. My research group has investigated the topic for 20 years now. For the first 15 years, we explored the approach of soft-typing untyped programs via type inference based on Hindley-Milner and on set-based analysis. For the past five years, we have explored two novel ideas: the use of explicit type annotations and a focus on incremental program conversion based on large-grained units of code.
In this talk, I will report on our successes and our failures. I will state the parameters of the field and argue for and against the decisions that we made within this space. The goal is to help others with their work as they enter this important research area.