The Design of Monty: a Programming/Scripting Language

This paper describes the design of Monty, a language intended to be equally suitable for both scripting and conventional programming. Monty features an unusually flexible type system in which all values are viewed as objects in a single-inheritance class hierarchy, static and dynamic typing are smoothly integrated, and both nonvariant and covariant generic classes are supported. An interesting byproduct of the design of Monty has been the light it has shed on the power of mutability as a linguistic concept. Among other things, it turns out that the type-soundness of a covariant generic class is closely related to the class's mutability.

[1]  Bernard Robinet,et al.  Combinators and functional programming languages : Thirteenth Spring School of the LITP, Val d'Ajol, France, May 6-10, 1985, proceedings , 1986 .

[2]  Andrew C. Myers,et al.  Parameterized types for Java , 1997, POPL '97.

[3]  Mirko Viroli,et al.  On Variance-Based Subtyping for Parametric Types , 2002, ECOOP.

[4]  Fred L. Drake,et al.  The Python Language Reference Manual , 1999 .

[5]  Stephen N. Freund,et al.  Adding type parameterization to the Java language , 1997, OOPSLA '97.

[6]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

[7]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[8]  John K. Ousterhout,et al.  Scripting: Higher-Level Programming for the 21st Century , 1998, Computer.

[9]  Martin Odersky,et al.  Pizza into Java: translating theory into practice , 1997, POPL '97.

[10]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[11]  Xavier Leroy,et al.  Unboxed objects and polymorphic typing , 1992, POPL '92.

[12]  Robert Cartwright,et al.  A first-class approach to genericity , 2003, OOPSLA '03.

[13]  John Launchbury,et al.  Unboxed values as first class citizens , 1991 .

[14]  Simon L. Peyton Jones,et al.  Unboxed Values as First Class Citizens in a Non-Strict Functional Language , 1991, FPCA.

[15]  Robert Cartwright,et al.  Compatible genericity with run-time types for the Java programming language , 1998, OOPSLA '98.

[16]  Martín Abadi,et al.  Dynamic typing in a statically-typed language , 1989, POPL '89.

[17]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[18]  D. W. Barron,et al.  The World of Scripting Languages , 2000 .

[19]  Luca Cardelli. Amber Combinators and Functional Programming Languages , 1985, Lecture Notes in Computer Science.

[20]  Richard C. H. Connor,et al.  An ad hoc approach to the implementation of polymorphism , 1991, TOPL.

[21]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.