Pizza into Java
Published 1 January 1997Open access
Martin Odersky, Philip Wadler
Citations416
Generate an AI Snapshot to get a quick, structured summary of this paper.
Study Snapshot
ObjectiveStudy objective
MethodsResearch methodology
PopulationPopulation studied
Sample sizeSample sizes
OutcomesStudy outcomes here
ResultsStudy results comes here
LimitationsResearch study limitations comes here
A concise AI-generated summary of the paper will appear here once you click Generate AI Snapshot.
Abstract
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 attempts to make these ideas accessible by translating them into Java. We mean that both figuratively and literally, because Pizza is defined by translation into Java. It turns out that these features integrate well: Pizza fits smoothly to Java, with only a few rough edges.
Keywords
Computer Science
The Java Language Specification
3,913 Citations1996James Gosling, Bill Joy +1 more
The Java Language Specification, Second Edition is the definitive technical reference for the Java programming language and provides complete, accurate, and detailed coverage of the syntax and semantics of the Java language.
ACM Computing SurveysOn understanding types, data abstraction, and polymorphism
1,675 Citations1985Luca Cardelli, Peter Wegner
A λ-calculus-based model for type systems that allows us to explore the interaction among the concepts of type, data abstraction, and polymorphism in a simple setting, unencumbered by complexities of production programming languages is developed.
The Java Programming Language
1,520 Citations1996Ken Arnold, James Gosling +1 more
The Java (TM)Programming Language, Second Edition, is the definitive resource for all serious Java programmers and lets you in on the rationale behind Java's design, direct from the language's creator, as well as the tradeoffs involved in using specific features.
Principal type-schemes for functional programs
1,096 Citations1982Lúıs Damas, Robin Milner
Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage.
How to make ad-hoc polymorphism less ad hoc
770 Citations1989Philip Wadler, Stephen Blott
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.
Oxford University Research Archive (ORA) (University of Oxford)Introduction to functional programming
687 Citations1988Richard Bird
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.
Cambridge University Press eBooksML for the Working Programmer
489 Citations1996Laurence C. Paulson
In teaching the methods of functional programming, how to program in Standard ML, a functional language recently developed at Edinburgh University, the author shows how to use such concepts as lists, trees, higher-order functions and infinite data structures.
ACM Transactions on Programming Languages and SystemsAbstract types have existential type
432 Citations1988John C. Mitchell, Gordon Plotkin
This work uses a second-order typed lambda calculus SOL to show how data algebras may be given types, passed as parameters, and returned as results of function calls.
F-bounded polymorphism for object-oriented programming
330 Citations1989Peter S. Canning, William R. Cook +3 more
F-bounded quantification is introduced to provide a basis for typed polymorphic functions in object-oriented languages and is a general form of polymorphism that seems useful whenever recursive type definitions and subtyping are used.
Type inclusion constraints and type inference
260 Citations1993Alex Aiken, Edward L. Wimmers
The application of the constraint solving algorithm with a type inference system for the lambda calculus with constants is illustrated, which is an extension of the Hindley/Milner system that can type a very large set of lambda terms.
Communications of the ACMWhat can we do about the unnecessary diversity of notation for syntactic definitions?
229 Citations1977Niklaus Wirth
The population of programming languages is steadily growing, and there is no end of this growth in sight, so many language definitions appear in journals, many are found in technical reports, and perhaps an even greater number remains confined to proprietory circles.
Theory and Practice of Object SystemsOn Binary Methods
197 Citations1995Kim B. Bruce, Luca Cardelli +4 more
This paper aims to demonstrate the efforts towards in-situ applicability of Eifrig’s TSP, which aims to provide real-time information about the physical properties of the TSP and its application in the natural environment.
Information and ComputationInheritance as implicit coercion
179 Citations1991Val Breazu-Tannen, Thierry Coquand +2 more
A method for providing semantic interpretations for languages with a type system featuring inheritance polymorphism, illustrated on an extension of the language Fun of Cardelli and Wegner, which is interpreted via a translation into an extended polymorphic lambda calculus.
Abstract types have existential types
158 Citations1985John C. Mitchell, Gordon Plotkin
This work uses a second-order typed lambda calculus SOL to show how data algebras may be given types, passed as parameters, and returned as results of function calls.
A system of constructor classes
121 Citations1993Mark P. Jones
DSpace@MIT (Massachusetts Institute of Technology)Lambda: The Ultimate Imperative
105 Citations1976Guy L. Steele, Gerald Jay Sussman
This paper demonstrates how to model the following common programming constructs in terms of an applicative order language similar to LISP: Simple Recursion, Iteration, Compound Statements and Expressions, GO TO and Assignment, Continuation-Passing, Escape Expressions and Call by Name.
ACM Transactions on Programming Languages and SystemsPolymorphic type inference and abstract data types
89 Citations1994Konstantin Läufer, Martin Odersky
This work shows how to add significant expressive power to statically typed functional languages with explicit type variables by incorporating first-class abstract types as an extension of algebraic data types and extends record types to allow abstract components.
A compilation method for ML-style polymorphic record calculi
58 Citations1992Atsushi Ohori
A method to compile an ML-style polymorphic record calculus into efficient code by refining a type inference algorithm and the type inference is shown to be sound and complete in the sense of Damas-Milner's algorithm for ML.
A framework for higher-order functions in C++
36 Citations1995Konstantin Läufer
This paper illustrates by means of various examples that object-oriented and functional idioms can coexist productively and can be used to enhance the functionality of common classes, for example, of nonlinear collections such as trees.
LISP and Symbolic ComputationAn interpretation of typed OOP in a language with state
31 Citations1995Jonathan Eifrig, Scott F. Smith +2 more
The semantics of Loop, an expressive typed object-oriented programming language with updatable instance variables, are given by a translation into a state-based language, Soop, that contains reference cells, records, and a form of F-bounded polymorphic type.
