Interpretations of the gradually-typed lambda calculus

Gradual typing is an approach to integrating static and dynamic type checking within the same language [Siek and Taha 2006]. Given the name "gradual typing", one might think that the most interesting aspect is the type system. It turns out that the dynamic semantics of gradually-typed languages is more complex than the static semantics, with many points in the design space [Wadler and Findler 2009; Siek et al. 2009] and many challenges concerning efficiency [Herman et al. 2007; Hansen 2007; Siek and Taha 2007; Siek and Wadler 2010; Wrigstad et al. 2010; Rastogi et al. 2012]. In this distilled tutorial, we explore the meaning of gradual typing and the challenges to efficient implementation by writing several definitional interpreters and abstract machines in Scheme for the gradually-typed lambda calculus.

[1]  Olivier Danvy,et al.  Representing Control: a Study of the CPS Transformation , 1992, Mathematical Structures in Computer Science.

[2]  Avik Chaudhuri,et al.  The ins and outs of gradual type inference , 2012, POPL '12.

[3]  Philip Wadler,et al.  Well-Typed Programs Can't Be Blamed , 2009, ESOP.

[4]  Jan Vitek,et al.  Integrating typed and untyped code in a scripting language , 2010, POPL '10.

[5]  Robert Harper,et al.  Practical Foundations for Programming Languages , 2012 .

[6]  Matthias Felleisen,et al.  Contracts for higher-order functions , 2002, ICFP '02.

[7]  Walid Taha,et al.  Gradual Typing for Objects , 2007, ECOOP.

[8]  Olivier Danvy Back to Direct Style , 1992, ESOP.

[9]  Walid Taha,et al.  Exploring the Design Space of Higher-Order Casts , 2009, ESOP.

[10]  Ronald Garcia,et al.  Calculating threesomes, with blame , 2013, ICFP.

[11]  Fritz Henglein,et al.  Dynamic Typing: Syntax and Proof Theory , 1994, Sci. Comput. Program..

[12]  Amr Sabry,et al.  The essence of compiling with continuations , 1993, PLDI '93.

[13]  Jeremy G. Siek,et al.  Threesomes, with and without blame , 2009, STOP@ECOOP.

[14]  Jeremy G. Siek Gradual Typing for Functional Languages , 2006 .

[15]  Cormac Flanagan,et al.  Unifying Hybrid Types and Contracts , 2007, Trends in Functional Programming.

[16]  Cormac Flanagan,et al.  Space-efficient gradual typing , 2010, High. Order Symb. Comput..

[17]  Olivier Danvy,et al.  Three Steps for the CPS Transformation , 2007 .