Results 11  20
of
39
Type Classes and Constraint Handling Rules
 In First Workshop on RuleBased Constraint Reasoning and Programming
, 2000
"... Type classes are an elegant extension to traditional, HindleyMilner based typing systems. ..."
Abstract

Cited by 14 (4 self)
 Add to MetaCart
Type classes are an elegant extension to traditional, HindleyMilner based typing systems.
Combining Type Classes And Existential Types
, 1994
"... This paper demonstrates that the novel combination of type classes and existential types adds significant expressive power to a language, requiring only a minor syntactic change. We explore this combination in the context of higherorder functional languages with static typing, parametric polymorphi ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
This paper demonstrates that the novel combination of type classes and existential types adds significant expressive power to a language, requiring only a minor syntactic change. We explore this combination in the context of higherorder functional languages with static typing, parametric polymorphism, algebraic data types, and HindleyMilner type inference. Since we have examined the underlying typetheoretic issues already, this paper focuses on the practical aspects of our extension. We first examine limitations of existing functional and objectoriented languages. We then give examples to demonstrate how our firstclass abstract types with userdefined interfaces address those limitations. Finally, we give an informal description of the translation from our language to a target language without type classes. Our extension equally applies to other languages with similar type systems and is independent of strictness considerations. It has been implemented in the Chalmers Haskell B. s...
Objects + Views = Components?
 In Proc. of Workshop on Abstract State Machines
, 2000
"... . In support of flexible composition, components need to be adaptable and they need to have firstclass plugs. Abstract state machines and objectoriented programming each satisfy one of these requirements very well but satisfy the other only incompletely. This paper describes views, a language ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
. In support of flexible composition, components need to be adaptable and they need to have firstclass plugs. Abstract state machines and objectoriented programming each satisfy one of these requirements very well but satisfy the other only incompletely. This paper describes views, a language construct which provides for both requirements in a balanced way. 1 Introduction Increasingly, software is developed from preexisting components rather than being built from scratch. Component middleware such as Corba [Pop98], COM [Box98] or JavaBeans [Eng97] allow applications to be constructed with the help of binarycomponents and foster the development of a component market [Szy98]. Components can also take the form of services which are implemented as separate software systems accessed over the internet [WWC92]. Looking beyond the technical details, components are parts which exist to be composed. The most important di#erence with respect to modules in traditional topdown develop...
The Open Calculus of Constructions: An Equational Type Theory with Dependent Types for Programming, Specification, and Interactive Theorem Proving
"... The open calculus of constructions integrates key features of MartinLöf's type theory, the calculus of constructions, Membership Equational Logic, and Rewriting Logic into a single uniform language. The two key ingredients are dependent function types and conditional rewriting modulo equatio ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
The open calculus of constructions integrates key features of MartinLöf's type theory, the calculus of constructions, Membership Equational Logic, and Rewriting Logic into a single uniform language. The two key ingredients are dependent function types and conditional rewriting modulo equational theories. We explore the open calculus of constructions as a uniform framework for programming, specification and interactive verification in an equational higherorder style. By having equational logic and rewriting logic as executable sublogics we preserve the advantages of a firstorder semantic and logical framework and especially target applications involving symbolic computation and symbolic execution of nondeterministic and concurrent systems.
On Coherence in Computer Algebra
, 1993
"... Modern computer algebra systems (e. g. AXIOM) support a rich type system including parameterized data types and the possibility of implicit coercions between types. In such a type system it will be frequently the case that there are different ways of building coercions between types. An importa ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
Modern computer algebra systems (e. g. AXIOM) support a rich type system including parameterized data types and the possibility of implicit coercions between types. In such a type system it will be frequently the case that there are different ways of building coercions between types. An important requirement is that all coercions between two types coincide, a property which is called coherence. We will prove a coherence theorem for a formal type system having several possibilities of coercions covering many important examples. Moreover, we will give some informal reasoning why the formally defined restrictions can be satisfied by an actual system.
Towards a New Way of Parameterization
"... Classical approaches to parameterization in axiomatic specification languages require the user to explicitly handle specification instantiation. This often makes specifications less readable and manageable. We therefore present a new parameterization mechanism which allows implicit instantiation. Ho ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Classical approaches to parameterization in axiomatic specification languages require the user to explicitly handle specification instantiation. This often makes specifications less readable and manageable. We therefore present a new parameterization mechanism which allows implicit instantiation. However, since this mechanism is less powerful as the first one we show how to combine them to achieve both elegance and power. We included both mechanisms in the specification language Spectrum.
Haskellstyle Overloading is NPhard
 In Proceedings of the 1994 International Conference on Computer Languages
, 1994
"... Extensions of the ML type system, based on constrained type schemes, have been proposed for languages with overloading. Type inference in these systems requires solving the following satisfiability problem. Given a set of type assumptions C over finite types and a type basis A, is there is a substit ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Extensions of the ML type system, based on constrained type schemes, have been proposed for languages with overloading. Type inference in these systems requires solving the following satisfiability problem. Given a set of type assumptions C over finite types and a type basis A, is there is a substitution S that satisfies C in that A ` CS is derivable? Under arbitrary overloading, the problem is undecidable. Haskell limits overloading to a form similar to that proposed by Kaes called parametric overloading. We formally characterize parametric overloading in terms of a regular tree language and prove that although decidable, satisfiability is NPhard when overloading is parametric. 1 Introduction A practical limitation of the ML type system is that it prohibits global overloading in a programming language by restricting to at most one the number of assumptions per identifier in a type context, a limitation noted by Milner himself [Mil78]. Suppose we wish to assert that a free identifier...
An Introduction to Category Theory, Category Theory Monads, and Their Relationship to Functional Programming
"... Incorporating imperative features into a purely functional language has become an active area of research within the functional programming community [10, 7, 12]. One of the techniques gaining widespread acceptance as a model for imperative functional programming is monads [13, 9]. The purpose of th ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Incorporating imperative features into a purely functional language has become an active area of research within the functional programming community [10, 7, 12]. One of the techniques gaining widespread acceptance as a model for imperative functional programming is monads [13, 9]. The purpose of this technical report is to give a category theoretic introduction to monads, and to explore the relationship to what functional programmers term a monad. Keywords: Monads; Category theory; Kleisli triple; Imperative functional programming. 1 Motivation This paper stems from the desire for an understanding of Moggi's work on the computational calculus and Monads [9, 8]. The presentation here owes much to the papers of Wadler [13, 14], and the basic texts on category theory [11, 1, 4, 6, 2]. 2 Basic category theory and monads Category theory is concerned with the observation that many of the properties from algebra can be simplified by a presentation in terms of diagrams containing arrows....
Parallel Haskell: The vectorisation monad
, 1993
"... It has long been known that some of the most common uses of for and whileloops in imperative programs can easily be expressed using the standard higherorder functions fold and map. With this correspondence as a starting point, we derive parallel implementations of various iterative constructs, ea ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
It has long been known that some of the most common uses of for and whileloops in imperative programs can easily be expressed using the standard higherorder functions fold and map. With this correspondence as a starting point, we derive parallel implementations of various iterative constructs, each having a better complexity than their sequential counterparts, and explore the use of monads to guarantee the soundness of the parallel implementation. As an aid to the presentation of the material, we use the proposed syntax for parallel Haskell [27] (figure 1) as a vehicle in which imperative functional programs will be expressed. Surprisingly, incorporating imperative features into a purely functional language has become an active area of research within the functional programming community [30, 24, 36, 20]. One of the techniques gaining widespread acceptance as a model for imperative functional programming is monads [38, 37, 26]. Typically monads are used to guarantee single threadedn...
Associated Types with Class
"... Haskell’s type classes allow adhoc overloading, or typeindexing, of functions. A natural generalisation is to allow typeindexing of data types as well. It turns out that this idea directly supports a powerful form of abstraction called associated types, which are available in C++ using traits clas ..."
Abstract
 Add to MetaCart
Haskell’s type classes allow adhoc overloading, or typeindexing, of functions. A natural generalisation is to allow typeindexing of data types as well. It turns out that this idea directly supports a powerful form of abstraction called associated types, which are available in C++ using traits classes. Associated types are useful in many applications, especially for selfoptimising libraries that adapt their data representations and algorithms in a typedirected manner. In this paper, we introduce and motivate associated types as a rather natural generalisation of Haskell’s existing type classes. Formally, we present a type system that includes a typedirected translation into an explicitly typed target language akin to System F; the existence of this translation ensures that the addition of associated data types to an existing Haskell compiler only requires changes to the front end.