Winâ Foy : functional object-oriented programming language
Abstract
This thesis will introduce a new strongly typed programming language utilizing
Self types, named Win--*Foy, along with a suitable user interface designed
specifically to highlight language features. The need for such a programming
language is based on deficiencies found in programming languages that support
both Self types and subtyping. Subtyping is a concept that is taken for granted
by most software engineers programming in object-oriented languages. Subtyping
supports subsumption but it does not support the inheritance of binary
methods. Binary methods contain an argument of type Self, the same type as
the object itself, in a contravariant position, i.e. as a parameter. There are
several arguments in favour of introducing Self types into a programming language
(11. This rationale led to the development of a relation that has become
known as matching [4, 5). The matching relation does not support subsumption,
however, it does support the inheritance of binary methods. Two forms
of matching have been proposed (lJ. Specifically, these relations are known as
higher-order matching and I-bound matching. Previous research on these relations
indicates that the higher-order matching relation is both reflexive and
transitive whereas the f-bound matching is reflexive but not transitive (7]. The
higher-order matching relation provides significant flexibility regarding inheritance
of methods that utilize or return values of the same type. This flexibility,
in certain situations, can restrict the programmer from defining specific classes
and methods which are based on constant values [21J. For this reason, the type
This is used as a second reference to the type of the object that cannot, contrary
to Self, be specialized in subclasses. F-bound matching allows a programmer
to define a function that will work for all types of A', a subtype of an upper
bound function of type A, with the result type being dependent on A'. The
use of parametric polymorphism in f-bound matching provides a connection to
subtyping in object-oriented languages. This thesis will contain two main sections.
Firstly, significant details concerning deficiencies of the subtype relation
and the need to introduce higher-order and f-bound matching relations into programming
languages will be explored. Secondly, a new programming language
named Win--*Foy Functional Object-Oriented Programming Language has been
created, along with a suitable user interface, in order to facilitate experimentation
by programmers regarding the matching relation. The construction of the
programming language and the user interface will be explained in detail.