Results 21  30
of
39
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
(Show Context)
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...
Programming Systems
"... We discuss type classes in the context of the Chameleon language, a Haskellstyle language where overloading resolution is expressed in terms of the metalanguage of Constraint Handling Rules (CHRs). In a first step, we show how to encode Haskell’s singleparameter type classes into Chameleon. The e ..."
Abstract
 Add to MetaCart
(Show Context)
We discuss type classes in the context of the Chameleon language, a Haskellstyle language where overloading resolution is expressed in terms of the metalanguage of Constraint Handling Rules (CHRs). In a first step, we show how to encode Haskell’s singleparameter type classes into Chameleon. The encoding works by providing an approrpriate set of CHRs which mimic the Haskell conditions. We also consider constructor classes, multiparameter type classes and functional dependencies. Chameleon provides a testbed to experiment with new overloading features. We show how some novel features such as universal quantification in context can naturally be expressed in Chameleon. 1.
Abstract An Overview of the Scala Programming Language
"... Scala provides a fusion between objectoriented 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 prog ..."
Abstract
 Add to MetaCart
(Show Context)
Scala provides a fusion between objectoriented 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. 1
On Coherence in Computer Algebra
"... 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 atype system it will be frequently the case that there are di erent ways of building coercions between types. An important requirement ..."
Abstract
 Add to MetaCart
(Show Context)
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 atype system it will be frequently the case that there are di erent 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 de ned restrictions can be satis ed by an actual system. 1.
Type Reconstruction for Type Classes 1
"... We study the type inference problem for a system with type classes as in the functional programming language Haskell. Type classes are an extension of MLstyle polymorphism with overloading. We generalize Milner’s work on polymorphism by introducing a separate context constraining the type variables ..."
Abstract
 Add to MetaCart
We study the type inference problem for a system with type classes as in the functional programming language Haskell. Type classes are an extension of MLstyle polymorphism with overloading. We generalize Milner’s work on polymorphism by introducing a separate context constraining the type variables in a typing judgement. This leads to simple type inference systems and algorithms which closely resemble those for ML. In particular we present a new unification algorithm which is an extension of syntactic unification with constraint solving. The existence of principal types follows from an analysis of this unification algorithm. 1
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 Haskellstyle 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 Haskellstyle 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 provide 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.
MHDL Language Reference Manual
, 1996
"... Properties : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 55 5.2 Property Value Definitions : : : : : : : : : : : : : : : : : : : : : : : : : : 57 5.3 Associations : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 58 6 Named Values 61 6.1 Name Definitions : : : : : ..."
Abstract
 Add to MetaCart
Properties : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 55 5.2 Property Value Definitions : : : : : : : : : : : : : : : : : : : : : : : : : : 57 5.3 Associations : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 58 6 Named Values 61 6.1 Name Definitions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 62 6.2 Value Definitions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 63 6.2.1 Function Bindings : : : : : : : : : : : : : : : : : : : : : : : : : : 65 6.2.2 Pattern Bindings : : : : : : : : : : : : : : : : : : : : : : : : : : : 69 6.3 Patterns and Pattern Matching : : : : : : : : : : : : : : : : : : : : : : : CONTENTS iii 6.4 Constraints : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 75 6.5 Equations : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 76 7 Expressions 79 7.1 Function Applications : : : : : : : : : : : : : : : : : : : : : : : : : : : : 81 7.2 Operator Applications ...
Beyond Type Classes
, 2002
"... We discuss type classes in the context of the Chameleon language, a Haskellstyle language where overloading resolution is expressed in terms of the metalanguage of Constraint Handling Rules (CHRs). In a first step, we show how to encode Haskell's singleparameter type classes into Chameleon. ..."
Abstract
 Add to MetaCart
We discuss type classes in the context of the Chameleon language, a Haskellstyle language where overloading resolution is expressed in terms of the metalanguage of Constraint Handling Rules (CHRs). In a first step, we show how to encode Haskell's singleparameter type classes into Chameleon. The encoding works by providing an approrpriate set of CHRs which mimic the Haskell conditions. We also consider constructor classes, multiparameter type classes and functional dependencies. Chameleon provides a testbed to experiment with new overloading features. We show how some novel features such as universal quantification in context can naturally be expressed in Chameleon.