Re: Polymorphism vs. Overloading

bevan@cs.man.ac.uk (Stephen J Bevan)
Thu, 27 Oct 1994 17:28:23 GMT

          From comp.compilers

Related articles
[16 earlier articles]
Re: Polymorphism vs. Overloading jsm@id.dth.dk (1994-10-31)
Re: Polymorphism vs. Overloading sofkam@rpi.edu (1994-10-31)
Re: Polymorphism vs. Overloading andand@csd.uu.se (1994-10-26)
Re: Polymorphism vs. Overloading dekker@dutiag.twi.tudelft.nl (1994-10-31)
Re: Polymorphism vs. Overloading danhicks@aol.com (1994-10-31)
Re: Polymorphism vs. Overloading odersky@ira.uka.de (Martin Odersky) (1994-10-31)
Re: Polymorphism vs. Overloading bevan@cs.man.ac.uk (1994-10-27)
Re: Polymorphism vs. Overloading pjj@cs.man.ac.uk (1994-10-28)
Re: Polymorphism vs. Overloading jhf@c3serve.c3.lanl.gov (1994-10-28)
Re: Polymorphism vs. Overloading mmcg@bruce.cs.monash.edu.au (1994-10-29)
Re: Polymorphism vs. Overloading hbaker@netcom.com (1994-10-29)
Re: Polymorphism vs. Overloading jhallen@world.std.com (1994-11-01)
Re: Polymorphism vs. Overloading kanze@lts.sel.alcatel.de (kanze) (1994-11-01)
[8 later articles]
| List of all articles for this month |

Newsgroups: comp.compilers
From: bevan@cs.man.ac.uk (Stephen J Bevan)
Keywords: polymorphism, bibliography
Organization: Department of Computer Science; University of Manchester
References: 94-10-144
Date: Thu, 27 Oct 1994 17:28:23 GMT

gdevivo@conicit.ve (Gabriela O. de Vivo) writes:
      ... At some point a question raised about the exact difference between
      Polymorphism and Overloading. ...


      ... Now, I wonder if some of you could help me by stating more
      precisely (and rigourosly) the exact nature of the difference. ...


Cardelli and Wegner's paper [Cardelli:Wegner:acm:cs:1985] discusses
polymorphism and overloading and uses Strachey's definitions in which
the latter is viewed as particular type of the former. See the paper
for more details.


@article
{ Cardelli:Wegner:acm:cs:1985
, author= "L. Cardelli and P. Wegner"
, title= "On Understanding Types, Data Abstraction and Polymorphism"
, journal= "ACM Computing Surveys"
, volume= 17
, number= 4
, pages= "480--521"
, month= dec
, year= 1985
, url= "ftp://www.research.digital.com/SRC/personal/Luca_Cardelli/Papers/OnUnderstanding.ps.Z"
, cr= "8703-0173"
, source= "copy / URL"
, checked= 19940821
, abstract= "Our objective is to understand the notion of type in
programming languages, present a model of typed, polymorphic
programming languages that reflects recent research in type theory,
and examine the relevance of recent research to the design of
practical programming languages. Object-oriented languages provide
both a framework and a motivation for exploring the interaction among
the concepts of type, data abstraction, and polymorphism, since they
extend the notion of type to data abstraction and since type
inheritance is an important form of polymorphism. We develop a
lambda-calculus-based model for type systems that allows us to explore
these interactions in a simple setting, unencumbered by complexities
of production programming languages. The evolution of languages from
untyped universes to monomorphic and then polymorphic type systems is
reviewed. Mechanisms for polymorphism such as overloading, coercion,
subtyping, and parameterization are examined. A unifying framework
for polymorphic type systems is developed in terms of the typed
lambda-calculus augmented to include binding of types by
quantification as well as binding of values by abstraction. The typed
lambda-calculus is augmented by universal quantification to model
generic functions with type parameters, existential quantification and
packaging (information hiding) to model abstract data types, and
bounded quantification to model subtypes and type inheritance. In this
way we obtain a simple and precise characterization of a powerful type
system that includes abstract data types, parametric polymorphism, and
multiple inheritance in a single consistent framework. The mechanisms
for type checking for the augmented lambda-calculus are discussed.
The augmented typed lambda-calculus is used as a programming language
for a variety of illustrative examples. We christen this language Fun
because fun instead of lambda is the functional abstraction keyword
and because it is pleasant to deal with. Fun is mathematically simple
and can serve as a basis for the design and implementation of real
programming languages with type facilities that are more powerful and
expressive than those of existing programming languages. In
particular, it provides a basis for the design of strongly typed
object-oriented languages."
, reffrom= Martini:acm:lfp:1988
, reffrom= Ohori:Buneman:acm:lfp:1988
, reffrom= Jategaonkar:Mitchell:acm:lfp:1988
, reffrom= Reddy:acm:lfp:1988
, reffrom= Queinnec:Cointe:acm:lfp:1988
, reffrom= Cardelli:Longo:acm:lfp:1990
, reffrom= Breazu-Tannen:Gunter:Scedrov:acm:lfp:1990
}
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.