96,279 research outputs found
Semantic Types for Class-based Objects
We investigate semantics-based type assignment for class-based object-oriented programming. Our motivation
is developing a theoretical basis for practical, expressive, type-based analysis of the functional
behaviour of object-oriented programs. We focus our research using Featherweight Java, studying two
notions of type assignment:- one using intersection types, the other a ‘logical’ restriction of recursive
types.
We extend to the object-oriented setting some existing results for intersection type systems. In doing
so, we contribute to the study of denotational semantics for object-oriented languages. We define a
model for Featherweight Java based on approximation, which we relate to our intersection type system
via an Approximation Result, proved using a notion of reduction on typing derivations that we show
to be strongly normalising. We consider restrictions of our system for which type assignment is decidable,
observing that the implicit recursion present in the class mechanism is a limiting factor in making
practical use of the expressive power of intersection types.
To overcome this, we consider type assignment based on recursive types. Such types traditionally
suffer from the inability to characterise convergence, a key element of our approach. To obtain a semantic
system of recursive types for Featherweight Java we study Nakano’s systems, whose key feature
is an approximation modality which leads to a ‘logical’ system expressing both functional behaviour
and convergence. For Nakano’s system, we consider the open problem of type inference. We introduce
insertion variables (similar to the expansion variables of Kfoury and Wells), which allow to infer when
the approximation modality is required. We define a type inference procedure, and conjecture its soundness
based on a technique of Cardone and Coppo. Finally, we consider how Nakano’s approach may be
applied to Featherweight Java and discuss how intersection and logical recursive types may be brought
together into a single system
A Context-Oriented Extension of F#
Context-Oriented programming languages provide us with primitive constructs
to adapt program behaviour depending on the evolution of their operational
environment, namely the context. In previous work we proposed ML_CoDa, a
context-oriented language with two-components: a declarative constituent for
programming the context and a functional one for computing. This paper
describes the implementation of ML_CoDa as an extension of F#.Comment: In Proceedings FOCLASA 2015, arXiv:1512.0694
Recommended from our members
Reusability in software engineering
This paper surveys recent work concerning reusability in software engineering. The current directions in software reusability are discussed, and the two major approaches of reusable building blocks and reusable patterns studied. An extensive bibliography, parts of which are annotated, is included
Towards Intelligent Databases
This article is a presentation of the objectives and techniques
of deductive databases. The deductive approach to databases aims at extending
with intensional definitions other database paradigms that describe
applications extensionaUy. We first show how constructive specifications can
be expressed with deduction rules, and how normative conditions can be defined
using integrity constraints. We outline the principles of bottom-up and
top-down query answering procedures and present the techniques used for
integrity checking. We then argue that it is often desirable to manage with
a database system not only database applications, but also specifications of
system components. We present such meta-level specifications and discuss
their advantages over conventional approaches
A Historical Perspective on Runtime Assertion Checking in Software Development
This report presents initial results in the area of software testing and analysis produced as part of the Software Engineering Impact Project. The report describes the historical development of runtime assertion checking, including a description of the origins of and significant features associated with assertion checking mechanisms, and initial findings about current industrial use. A future report will provide a more comprehensive assessment of development practice, for which we invite readers of this report to contribute information
- …