| C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967. |
....formed the basis for the later development of modular programming languages. This notion of abstraction is more restrictive than the general notion of algebraic abstract types [Futatsugi Goguen Jouannaud Meseguer 85] Polymorphism is the ability of a function to handle objects of many types [Strachey 67] In ad hoc polymorphism a function can behave in arbitrarily different ways on objects of different types. We shall ignore this view here, and consider only generic polymorphism where a function behaves in some uniform way over all the relevant types. The two forms of generic polymorphism are ....
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
....environment. Exercise Give strategies to interpret cond and while. These should be expressible as (non extended) regular expressions. Note that this way of modelling commands and their sequential composition is radically different to the traditional approach in denotational semantics (see e.g. [33, 32, 35, 34]) in which commands are modelled as state transformers, i.e. roughly speaking) functions from states to states, and sequential composition as function composition. To fully understand the difference in our point of view, we must see how imperative variables are modelled in our approach; this is ....
C. Strachey. Fundamental concepts in programming languages. Lecture notes for the International Summer School in Computer Programming, Copenhagen, 1967.
....4.3.3 Other cl isomorphisms Acknowledgments References Page 3 1. Introduction System F [Gir 71] Rey 74] is a well known typed l calculus with polymorphic types that provides a basis for polymorphic programming languages. We study an extension of F that combines parametric polymorphism [Str 67] with subtyping. We call this language F : where : is our symbol for the subtype relation. F : is closely related to the language F identified by Curien, and used by Curien and Ghelli primarily as a test case for certain mathematical techniques [Ghe 90] CG 91] F is, in turn, a fragment ....
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
....are many harder and more substantial examples. Various metatheorems can also be obtained, such as a syntactic version of Reynolds s abstraction theorem. Page 2 1. Explicit relations A polymorphic function is parametric if its behavior does not depend on the type at which it is instantiated [Strachey 1967]. A function that reverses lists, for example, is parametric because it does not look at the types of the elements of the lists given as inputs. There are important non parametric polymorphic functions, such as a print function that maps values of any type to text representations. With this ....
C. Strachey, Fundamental concepts in programming languages. Lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
....of the relations between implicit and explicit polymorphism may be necessary when extending implicit polymorphic systems in certain ways. Page 3 A bit of history Polymorphic typing of programs was envisioned by Strachey; his lecture notes on fundamental concepts in programming languages [Strachey 67] already contains much of the notation and terminology used today. Polymorphic types were already known as type schemas in combinatory logic [Curry 58] Extending Curry s work, and collaborating with him, Hindley introduced the idea of a principal type schema, which is the most general ....
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, 1967 Page 19
....4.3.3 Other cl isomorphisms Acknowledgments References Page 3 1. Introduction System F [Gir 71] Rey 74] is a well known typed l calculus with polymorphic types that provides a basis for polymorphic programming languages. We study an extension of F that combines parametric polymorphism [Str 67] with subtyping. We call this language F : where : is our symbol for the subtype relation. F : is closely related to the language F identified by Curien, and used by Curien and Ghelli primarily as a test case for certain mathematical techniques [Ghe 90] CG 91] F is, in turn, a ....
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
....the basis for the Page 5 later development of modular programming languages. This notion of abstraction is more restrictive than the general notion of algebraic abstract types [Futatsugi Goguen Jouannaud Meseguer 85] Polymorphism is the ability of a function to handle objects of many types [Strachey 67] In ad hoc polymorphism a function can behave in arbitrarily different ways on objects of different types. We shall ignore this view here, and consider only generic polymorphism where a function behaves in some uniform way over all the relevant types. The two forms of generic polymorphism are ....
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
....Thus we define an extension of F [CG92] to which we add functions that dispatch on different terms according to the type they receive as argument. In other words, we enrich the explicit parametric polymorphism of F by an explicit ad hoc polymorphism (according to the classification of [Str67] We prove that the calculus we obtain, called F , enjoys the properties of Church Rosser and Subject Reduction. This extension constitutes our paradigmatic language for the foundation of object oriented programming: the connections between F and object oriented languages are widely ....
....delle Scienze Matematiche according to the type passed as argument. As a side effect we obtain that types will no longer be erasable at runtime. This research fits into a larger framework: In language theory, polymorphism has two orthogonal classifications: parametric vs. ad hoc (see [Str67] and explicit vs. implicit . Parametric polymorphism, i.e. the capability of performing the same code on different types, has been widely studied, both in the explicit form (where types participate directly in the syntax; e.g. System F ) and in the implicit one (where types participate via the ....
C. Strachey. Fundamental concepts in programming languages. Lecture notes for International Summer School in Computer Programming, Copenhagen, August 1967.
....to be inconvenient to program in and, as pointed out in [1] even the most conventional programming languages manifest some form of polymorphism. It is already clear that Prolog is a polymorphic language. What is less clear is the nature of its polymorphism from a programming perspective. Strachey [28] distinguished between two major kinds of polymorphism: parametric polymorphism that is obtained when a function works uniformly on a range of types and ad hoc polymorphism that is obtained when a function works in somewhat unrelated ways on several different types. This classification is refined ....
Strachey, C. Fundamental concepts in programming languages. Lecture Notes for International Summer School in Computer Programming, Copenhagen, August 1967.
....bounded type quantification, and abstract data types. This paper provides an informal introduction to type classes, and defines them formally by means of type inference rules. 1 Introduction Strachey chose the adjectives ad hoc and parametric to distinguish two varieties of polymorphism [Str67]. Ad hoc polymorphism occurs when a function is defined over several different types, acting in a different way for each type. A typical example is overloaded multiplication: the same symbol may be used to denote multiplication of integers (as in 3 3) and multiplication of floating point values ....
C. Strachey, Fundamental concepts in programming languages. Lecture notes for International Summer School in Computer Programming, Copenhagen, August 1967.
....dynamique. Dans la section 6 nous discutons du probleme de choix du code pour un foncteur surcharge. 2. Surcharge et liaison tardive Depuis deux decennies, on distingue en theorie des types deux formes differentes de polymorphisme : le polymorphismeparametrique et le polymorphisme ad hoc [Str67]. Le polymorphisme parametrique autorise l ecriture de fonctions dont le code peut etre utilise avec une infinite de types, alors que par le polymorphisme ad hoc (ou surcharge) il est possible d ecrire des fonctions qui executent un code different pour chaque type. Les langages de programmation ....
Strachey (C.). -- Fundamental concepts in programming languages. -- Copenhagen, Lecture notes for International Summer School in Computer Programming, August 1967.
....2DColorPoint of sections 2.2 and 2.3. class 2DPoint x:Int = 0; y:Int = 0 norm = sqrt(self.x2 self.y2) erase = update x = 0) move = fn(dx:Int,dy:Int) update x=self.x dx; y=self.y dy) norm: Real; erase: Mytype; move: Int x Int) 2DPoint ] 16 According to the classification of [24], the mechanism of overloading is often referred as ad hoc polymorphism. class 2DColorPoint is 2DPoint x:Int = 0; y:Int = 0; c:String = black isWhite = self.c = white ) move = fn(dx:Int,dy:Int) update x=self.x dx; y=self.y dy; c= white ) isWhite: Bool move: Int x Int) ....
C. Strachey. Fundamental concepts in programming languages. Lecture notes for International Summer School in Computer Programming, Copenhagen, August 1967.
....Structure of closed Set : 59 iii Chapter 1 Introduction 1.1 Background Polymorphism is one of the important tools for increasing programming efficiency and re usability of programs. Polymorphism has two classifications: parametric vs ad hoc (see [Str67]) and implicit vs explicit . A parametric polymorphic function is defined uniformly over types. That is, though a parametric polymorphic function behaves as a collection of monomorphic functions, they have the shared procedure written as a single lambda expression. System F [Gir72] enables us to ....
Strachey, C., Fundamental concepts in programming languages, Lecture notes for International Summer School in Computer Programming, Copenhagen, 1967.
....are many harder and more substantial examples. Various metatheorems can also be obtained, such as a syntactic version of Reynolds s abstraction theorem. Page 2 1. Explicit relations A polymorphic function is parametric if its behavior does not depend on the type at which it is instantiated [Strachey 1967] . A function that reverses lists, for example, is parametric because it does not look at the types of the elements of the lists given as inputs. There are important non parametric polymorphic functions, such as a print function that maps values of any type to text representations. With this ....
C. Strachey, Fundamental concepts in programming languages . Lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
....the best features of parametric types and virtual types be integrated Parametric types and virtual types have both been proposed as extensions to Java, and address roughly similar issues. Parametric types date back to arrays in Fortran, with key contributions to their theory coming from Strachey [Str67] and Reynolds [Rey74,Rey83] and examples of practice appearing in languages as diverse as Ada (generics) C (templates) and Standard ML (parametric polymorphism) Parametric types for Java have been proposed by Myers, Bank, and Liskov [MBL97] by Agesen, Freund, and Mitchell [AFM97] by Bruce ....
C. Strachey, Fundamental concepts in programming languages. Lecture notes for International Summer School in Computer Programming, Copenhagen, August 1967. 25
....are functions whose operands (actual parameters) can have more than one type. Polymorphic types are types whose operations are applicable to values of more than one type. polymorphism universal ad hoc parametric inclusion overloading coercion Figure 1: Varieties of polymorphism. Strachey [Strachey 67] distinguished, informally, between two major kinds of polymorphism. Parametric polymorphism is obtained when a function works uniformly on a range of types: these types normally exhibit some common structure. Ad hoc polymorphism is obtained when a function works, or appears to work, on several ....
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
No context found.
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
No context found.
C. Strachey, Fundamental concepts in programming languages . Lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
No context found.
C.Strachey: Fundamental concepts in programming languages, lecture notes for the International Summer School in Computer Programming, Copenhagen, August 1967.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC