• Publications
  • Influence
Featherweight Java: a minimal core calculus for Java and GJ
This work extends Featherweight Java with generic classes in the style of GJ and gives a detailed proof of type safety, which formalizes for the first time some of the key features ofGJ.
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
"Some half dozen persons have written technically on combinatory logic, and most of these, including ourselves, have published something erroneous"; this is regarded as evidence that the subject is refractory.
Featherweight Java: a minimal core calculus for Java and GJ
A proof of type safety for Featherweight Java illustrates many of the interesting features of a safety proof for the full language, while remaining pleasingly compact.
How to make ad-hoc polymorphism less ad hoc
Type classes extend the Hindley/Milner polymorphic type system, and provide a new approach to issues that arise in object-oriented programming, bounded type quantification, and abstract data types.
Introduction to functional programming
  • R. Bird, P. Wadler
  • Economics
    Prentice Hall International series in computer…
  • 1988
This is a thorough introduction to the fundamental concepts of functional programming that includes a simple, yet coherent treatment of the Haskell class; a calculus of time complexity; and new coverage of monadic input-output.
The essence of functional programming
  • P. Wadler
  • Computer Science
    POPL '92
  • 1 February 1992
This paper explores the use monads to structure functional programs and describes the relation between monads and the continuation-passing style in a compiler for Haskell that is written in Haskell.
Links: Web Programming Without Tiers
Links supports rich clients running in what has been dubbed 'Ajax' style, and supports concurrent processes with statically-typed message passing, and client-side concurrency in JavaScript and transfer of computation between client and server are both supported by translation into continuation-passing style.
Theorems for free!
From the type of a polymorphic function the authors can derive a theorem that it satisfies, courtesy of Reynolds’ abstraction theorem for the polymorphic lambda calculus, which provides a free source of useful theorems.
Making the future safe for the past: adding genericity to the Java programming language
GJ increases expressiveness and safety: code utilizing generic libraries is no longer buried under a plethora of casts, and the corresponding casts inserted by the translation are guaranteed to not fail.
Pizza into Java: translating theory into practice
Pizza is a strict superset of Java that incorporates three ideas from the academic community: parametric polymorphism, higher-order functions, and algebraic data types. Pizza is defined by