Title: Department of Computer Science Seminar Date: Friday, Nov. 24, 2000 Time: 11:00 am to 12:30 pm Venue: Room N101, CSIT Building [108] Speaker: Luigi Liquori, Ecole Nationale Supérieure des Mines de Nancy & LORIA Description: "Prototype-based languages and a framework for object calculi" Abstract In this talk we investigate, in the context of functional prototype-based languages, objects which might extend themselves upon receiving a message. The possibility for an object of extending its own ``self'', referred to by Cardelli, as a self-inflicted operation, is novel in the context of typed object-based languages. We present a sound type system for this calculus which guarantees that evaluating a well-typed expression will never yield a message-not-found run-time error. We give several examples which illustrate the increased expressive power of our system with respect to existing calculi of objects. The new type system allows also for a flexible width-subtyping, still permitting sound method override, and a limited form of object extension. The resulting calculus appears to be a good starting point for a rigorous mathematical analysis of class-based languages. Moreover, we give a general framework for the foundation of an operational (small step) semantics of object-based languages with an emphasis on functional and imperative issues. The framework allows classifying very naturally many object-based calculi according to their main implementation techniques of inheritance, namely delegation and embedding, and their particular strategies. This distinction comes easily from a choice in the rules. Our framework is founded on two previous works: lambda-Obj+, a version of the Lambda Calculus of Objects of Fischer, Honsell, and Mitchell, for the object aspects, and lambda-sigma-a-w of Benaissa, Lescanne, and Rose, for the description of the operational semantics and sharing. The former is the formalization of a small delegation-based language which contains both lambda calculus and object primitives to create, update, and send messages to objects, while the latter is designed to provide a generic description of functional language implementations and is based on a calculus of explicit substitution extended with addresses to deal with memory management. URL: http://cs.anu.edu.au/lib/seminars/seminars00/dept20001124b