Results 11 - 20
of
26
An overview of the Scala programming language (second edition)
- EMIR B, MCDIRMID S, MICHELOUD S, MIHAYLOV N, SCHINZ M,. STENMAN E, SPOON L, ZENGER M
, 2006
"... Scala fuses object-oriented and functional programming in a statically typed programming language. It is aimed at the construction of components and component systems. This paper gives an overview of the Scala language for readers who are familar with programming methods and programming language des ..."
Abstract
-
Cited by 12 (0 self)
- Add to MetaCart
Scala fuses object-oriented and functional programming in a statically typed programming language. It is aimed at the construction of components and component systems. This paper gives an overview of the Scala language for readers who are familar with programming methods and programming language design.
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 higher-order 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 higher-order functional languages with static typing, parametric polymorphism, algebraic data types, and Hindley-Milner type inference. Since we have examined the underlying type-theoretic issues already, this paper focuses on the practical aspects of our extension. We first examine limitations of existing functional and object-oriented languages. We then give examples to demonstrate how our first-class abstract types with user-defined 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 first-class plugs. Abstract state machines and object-oriented programming each satisfy one of these requirements very well but satisfy the other only incompletely. This paper describes views, a language ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
. In support of flexible composition, components need to be adaptable and they need to have first-class plugs. Abstract state machines and object-oriented 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 pre-existing components rather than being built from scratch. Component middleware such as Corba [Pop98], COM [Box98] or Java-Beans [Eng97] allow applications to be constructed with the help of binary-components 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 top-down develop...
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 important ..."
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. 1 Introduction Modern computer algebra systems (e. g. AXIOM [12]) support many different types which correspond to mathematical structures. By the use of parameterized data types (also called type constructors) and of generic operators they can handle a variety of structures in a uniform way. If such a system is internally strongly typed...
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 Martin-Lö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 t ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
The open calculus of constructions integrates key features of Martin-Lö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 higher-order style. By having equational logic and rewriting logic as executable sublogics we preserve the advantages of a first-order semantic and logical framework and especially target applications involving symbolic computation and symbolic execution of nondeterministic and concurrent systems.
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.
Haskell-style Overloading is NP-hard
- 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 2 (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 NP-hard 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 while-loops in imperative programs can easily be expressed using the standard higher-order 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 while-loops in imperative programs can easily be expressed using the standard higher-order 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...
Advanced Type Extensions and Applications in Chameleon
"... Abstract There are a number of research efforts directed at adding advancedtyping features such as, guarded recursive data types, type classes, dependent types etc. to Haskell-style language. By and large, theseextensions have been studied independently. Here, we present a unifying formal framework ..."
Abstract
- Add to MetaCart
Abstract There are a number of research efforts directed at adding advancedtyping features such as, guarded recursive data types, type classes, dependent types etc. to Haskell-style language. By and large, theseextensions have been studied independently. Here, we present a unifying formal framework to study these features. Thus, we canexpress some novel variants such as extended algebraic data types and various forms of lexically scoped type annotations. We pro-vide numerous examples to show the usefulness of these features. Furthermore, we have implemented these extensions as part of theChameleon system (an experimental version of Haskell). Hence, we can greatly extend the expressiveness of languages such asHaskell.

