Like it or not, dynamically typed scripting languages are far more popular than programming languages that originate in academic laboratories. Most scripting languages are untyped and have a flexible semantics for primitive operations. A lot of programmers find these attributes appealing and use scripting languages for just these reasons. Reflective programmers are also beginning to notice, however, that when small untyped scripts grow old (and/or large), maintaining them becomes difficult. A lack of types means that programmers must (re)discover critical pieces of design information every time they wish to change or improve a program.
My team and I have therefore embarked on a research program that aims to solve this large and growing engineering problem with a combination of experience and tools from academic programming language research. In this talk I will present the first milestone: Typed Scheme, an explicitly typed extension of PLT Scheme, an untyped scripting language. Using Typed Scheme, programmers can add types to a code base on a module by module basis. Two factors make such transformations straightforward and useful. First, the type system is highly flexible, combining numerous academic results with the novel notion of occurrence typing. Second, the type system uses Findler's higher-order contracts to make the integration of typed and untyped modules safe.
Collaborators: Sam Tobin-Hochstadt, Ryan Culpepper