Show simple item record

Files in this item

Thumbnail

Item metadata

dc.contributor.advisorMorrison, Ronald
dc.contributor.advisorConnor, R. C. H.
dc.contributor.authorBalasubramaniam, Dharini
dc.coverage.spatial173 p.en_US
dc.date.accessioned2018-05-23T13:42:27Z
dc.date.available2018-05-23T13:42:27Z
dc.date.issued1998
dc.identifier.urihttps://hdl.handle.net/10023/13495
dc.description.abstractAny system that models a real world application has to evolve to be consistent with its changing domain. Dealing with evolution in an effective manner is particularly important for those systems that may store large amounts of data such as databases and persistent languages. In persistent programming systems, one of the important issues in dealing with evolution is the specification of code that will continue to work in a type safe way despite changes to type definitions. Polymorphism is one mechanism which allows code to work over many types. Inclusion polymorphism is often said to be a model of type evolution. However, observing type changes in persistent systems has shown that types most commonly exhibit additive evolution. Even though inclusion captures this pattern in the case of record types, it does not always do so for other type constructors. The confusion of subtyping, inheritance and evolution often leads to unsound or at best, dynamically typed systems. Existing solutions to this problem do not completely address the requirements of type evolution in persistent systems. The aim of this thesis is to develop a form of polymorphism that is suitable for modelling additive evolution in persistent systems. The proposed strategy is to study patterns of evolution for the most generally used type constructors in persistent languages and to define a new relation, called extension, which models these patterns. This relation is defined independent of any existing relations used for dealing with evolution. A programming language mechanism is then devised to provide polymorphism over this relation. The polymorphism thus defined is called extension polymorphism. This thesis presents work involving the design and definition of extension polymorphism and an implementation of a type checker for this polymorphism. A proof of soundness for a type system which supports extension polymorphism is also presented.en_US
dc.language.isoenen_US
dc.publisherUniversity of St Andrews
dc.subject.lccQA76.9P7B2
dc.titleExtension polymorphismen_US
dc.typeThesisen_US
dc.type.qualificationlevelDoctoralen_US
dc.type.qualificationnamePhD Doctor of Philosophyen_US
dc.publisher.institutionThe University of St Andrewsen_US


This item appears in the following Collection(s)

Show simple item record