Results 11  20
of
32
Notes on Sconing and Relators
, 1993
"... This paper describes a semantics of typed lambda calculi based on relations. The main mathematical tool is a categorytheoretic method of sconing, also called glueing or Freyd covers. Its correspondence to logical relations is also examined. 1 Introduction Many modern programming languages feature ..."
Abstract

Cited by 24 (0 self)
 Add to MetaCart
This paper describes a semantics of typed lambda calculi based on relations. The main mathematical tool is a categorytheoretic method of sconing, also called glueing or Freyd covers. Its correspondence to logical relations is also examined. 1 Introduction Many modern programming languages feature rather sophisticated typing mechanisms. In particular, languages such as ML include polymorphic data types, which allow considerable programming flexibility. Several notions of polymorphism were introduced into computer science by Strachey [Str67], among them the important notion of parametric polymorphism. Strachey's intuitive definition is that a polymorphic function is parametric if it has a uniformly given algorithm in all types, that is, if the function's behavior is independent of the type at which the function is instantiated. Reynolds [Rey83] proposed a mathematical definition of parametric polymorphic functions by means of invariance with respect to certain relations induced by typ...
Generics of a Higher Kind
"... Abstract. With Java 5 and C # 2.0, firstorder parametric polymorphism was introduced in mainstream objectoriented programming languages under the name of generics. Although the firstorder variant of generics is very useful, it also imposes some restrictions: it is possible to abstract over a type ..."
Abstract

Cited by 20 (4 self)
 Add to MetaCart
Abstract. With Java 5 and C # 2.0, firstorder parametric polymorphism was introduced in mainstream objectoriented programming languages under the name of generics. Although the firstorder variant of generics is very useful, it also imposes some restrictions: it is possible to abstract over a type, but the resulting type constructor cannot be abstracted over. This can lead to code duplication. We removed this restriction in Scala, by allowing type constructors as type parameters and abstract types. This paper presents the design and implementation of the resulting type constructor polymorphism. It combines type constructor polymorphism with implicit parameters to yield constructs similar to, and at times more expressive than, Haskell’s constructor type classes. The paper also studies interactions with other objectoriented language constructs, and discusses the gains in expressiveness. 1
HigherOrder Intersection Types and Multiple Inheritance
, 1995
"... this paper was completed, the metatheory of this system has been studied in much greater detail by Compagnoni [ Compagnoni, 1994, Compagnoni, 1995 ] . A type system combining intersection types with a powerful form of polymorphism is of independent interest. Reynolds [ 1988 ] has argued that interse ..."
Abstract

Cited by 17 (6 self)
 Add to MetaCart
this paper was completed, the metatheory of this system has been studied in much greater detail by Compagnoni [ Compagnoni, 1994, Compagnoni, 1995 ] . A type system combining intersection types with a powerful form of polymorphism is of independent interest. Reynolds [ 1988 ] has argued that intersection types can form the basis of elegant language designs. But his Forsythe language has only a firstorder type system, and thus lacks some of the expressive possibilities of polymorphic languages like ML. Our work represents a step toward a synthesis of these styles of language design. The following section shows some examples of multiple inheritance using a simple highlevel syntax. Section 3, the core of the paper, defines the calculus F
A Study of Semantics, Types, and Languages for Databases and Object Oriented Programming
, 1989
"... The purpose of this thesis is to investigate a type system for databases and objectoriented programming and to design a statically typed programming language for these applications. Such a language should ideally have a static type system that supports: • polymorphism and static type inference, • r ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
The purpose of this thesis is to investigate a type system for databases and objectoriented programming and to design a statically typed programming language for these applications. Such a language should ideally have a static type system that supports: • polymorphism and static type inference, • rich data structures and operations to represent various data models for databases including the relational model and more recent complex object models, • central features of objectoriented programming including user definable class hierarchies, multiple inheritance, and data abstraction, • the notion of extents and objectidentities for objectoriented databases. Without a proper formalism, it is not obvious that the construction of such a type system is possible. This thesis attempts to construct one such formalism and proposes a programming language that uniformly integrate all of the above features. The specific contributions of this thesis include: • A simple semantics for ML polymorphism and axiomatization of the equational theory of ML. • A uniform generalization of the relational model to arbitrary complex database objects that
Towards equal rights for higherkinded types
 6TH INTERNATIONAL WORKSHOP ON MULTIPARADIGM PROGRAMMING WITH LANGUAGES AT THE EUROPEAN CONFERENCE ON OBJECTORIENTED PROGRAMMING (ECOOP
, 2007
"... Generics are a very popular feature of contemporary OO languages, such as Java, C # or Scala. Their support for genericity is lacking, however. The problem is that they only support abstracting over proper types, and not over generic types. This limitation makes it impossible to, e.g., define a pre ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
Generics are a very popular feature of contemporary OO languages, such as Java, C # or Scala. Their support for genericity is lacking, however. The problem is that they only support abstracting over proper types, and not over generic types. This limitation makes it impossible to, e.g., define a precise interface for Iterable, a core abstraction in Scala’s collection API. We implemented “type constructor polymorphism” in Scala 2.5, which solves this problem at the root, thus greatly reducing the duplication of type signatures and code.
Basic theory of Fbounded quantification
 Information and Computation
, 1999
"... System Fbounded is a second order typed lambda calculus, where the basic features of objectoriented languages can be naturally modelled. Fbounded extends the better known system F , in a way that provides an immediate solution for the treatment of the socalled "binary methods". Alth ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
System Fbounded is a second order typed lambda calculus, where the basic features of objectoriented languages can be naturally modelled. Fbounded extends the better known system F , in a way that provides an immediate solution for the treatment of the socalled "binary methods". Although more powerful than F and also quite natural, system Fbounded has only been superficially studied from a foundational perspective and many of its essential properties have been conjectured but never proved in the literature. The aim of this paper is to give a solid foundation to Fbounded , by addressing and proving the key properties of the system. In particular transitivity elimination, completeness of the type checking semialgorithm, the subject reduction property for fij reduction, conservativity with respect to system F and antisymmetry of a "full" subsystem are considered, and various possible formulations for system Fbounded are compared. Finally a semantic interpretation of sy...
ClassisType is Inadequate for Object Reuse
 ACM SIGPLAN Notices
, 2001
"... The concepts of the basic entities, i.e., objects, object classes, object types, etc., in the type hierarchy of objectoriented languages are revisited. The notion of object reuse is defined and elaborated. We show that while object classes are useful in object description and creation, the class ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
The concepts of the basic entities, i.e., objects, object classes, object types, etc., in the type hierarchy of objectoriented languages are revisited. The notion of object reuse is defined and elaborated. We show that while object classes are useful in object description and creation, the classistype principle which is used in many objectoriented languages is inadequate for object reuse. We also show that parameterized types and generic functions are better served by using kindbounded qualification than universal qualification and other mechanisms. Keywords: Object reuse, software integration, objects, classes, types, kinds, classistype principle, parameterized types, generic functions, kindbounded polymorphism 1
Abstract Safe Typelevel Abstraction in Scala
"... Most formal accounts of objectoriented languages have focussed on type soundness: the safety that type checking provides with respect to termlevel computation and abstractions. However, with typelevel abstraction mechanisms becoming increasingly more sophisticated, bringing this guarantee to the ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Most formal accounts of objectoriented languages have focussed on type soundness: the safety that type checking provides with respect to termlevel computation and abstractions. However, with typelevel abstraction mechanisms becoming increasingly more sophisticated, bringing this guarantee to the level of types has become quite pressing. We call this property kind soundness: kind checking ensures that type constructors are never applied to unexpected type arguments. We present Scalina, a purely objectoriented calculus that employs the same abstraction mechanisms at the type level as well as at the kind level. Soundness for both levels can thus be proven by essentially the same arguments. Kind soundness finally allows designers of typelevel abstractions to join their termlevel colleagues in relying on the compiler to catch deficiencies before they are discovered by their clients. 1.
Monad Transformers as Monoid Transformers
"... The incremental approach to modular monadic semantics constructs complex monads by using monad transformers to add computational features to a preexisting monad. A complication of this approach is that the operations associated to the preexisting monad need to be lifted to the new monad. In a compa ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
The incremental approach to modular monadic semantics constructs complex monads by using monad transformers to add computational features to a preexisting monad. A complication of this approach is that the operations associated to the preexisting monad need to be lifted to the new monad. In a companion paper by Jaskelioff, the lifting problem has been addressed in the setting of system F ω. Here, we recast and extend those results in a categorytheoretic setting. We abstract and generalize from monads to monoids (in a monoidal category), and from monad transformers to monoid transformers. The generalization brings more simplicity and clarity, and opens the way for lifting of operations with applicability beyond monads. Key words: Monad, Monoid, Monoidal Category