Results 11 - 20
of
47
Type Parametric Programming
, 1993
"... We introduce a new abstraction mechanism, type parametric combinators, which supports abstraction over type constructors defined by datatype declarations found in functional languages such as Miranda, Haskell, and ML. This mechanism allows the definition and use of high level abstractions not pos ..."
Abstract
-
Cited by 13 (5 self)
- Add to MetaCart
We introduce a new abstraction mechanism, type parametric combinators, which supports abstraction over type constructors defined by datatype declarations found in functional languages such as Miranda, Haskell, and ML. This mechanism allows the definition and use of high level abstractions not possible in traditional languages and could be used to define user programmable derived instance declarations for type classes in Haskel. We illustrate its use in an actual programming language by giving examples in the ML dialect CRML.
Primitive (co)recursion and course-of-values (co)iteration, categorically
- Informatica
, 1999
"... Abstract. In the mainstream categorical approach to typed (total) functional programming, datatypes are modelled as initial algebras and codatatypes as terminal coalgebras. The basic function definition schemes of iteration and coiteration are modelled by constructions known as catamorphisms and ana ..."
Abstract
-
Cited by 12 (6 self)
- Add to MetaCart
Abstract. In the mainstream categorical approach to typed (total) functional programming, datatypes are modelled as initial algebras and codatatypes as terminal coalgebras. The basic function definition schemes of iteration and coiteration are modelled by constructions known as catamorphisms and anamorphisms. Primitive recursion has been captured by a construction called paramorphisms. We draw attention to the dual construction of apomorphisms, and show on examples that primitive corecursion is a useful function definition scheme. We also put forward and study two novel constructions, viz., histomorphisms and futumorphisms, that capture the powerful schemes of course-of-value iteration and its dual, respectively, and argue that even these are helpful.
Functional programming with apomorphisms (corecursion
- Proceedings of the Estonian Academy of Sciences: Physics, Mathematics
, 1998
"... Abstract. In the mainstream categorical approach to typed (total) functional programming, functions with inductive source types defined by primitive recursion are called paramorphisms; the utility of primitive recursion as a scheme for defining functions in programming is well known. We draw attenti ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
Abstract. In the mainstream categorical approach to typed (total) functional programming, functions with inductive source types defined by primitive recursion are called paramorphisms; the utility of primitive recursion as a scheme for defining functions in programming is well known. We draw attention to the dual notion of apomorphisms — with coinductive target types defined by primitive corecursion and show on examples that primitive corecursion is useful in programming. Key words: typed (total) functional programming, categorical program calculation, (co)datatypes, (co)recursion forms. 1.
Programming with Algebras
- Advanced Functional Programming, number 925 in Lecture Notes in Computer Science
, 1995
"... Introduction From the early days of computing, many individuals have recognized that algebras provide interesting mathematical models for at least some aspects of programs. In mathematics, an algebra consists of a set (called the carrier of the algebra), together with a finite set of total function ..."
Abstract
-
Cited by 8 (2 self)
- Add to MetaCart
Introduction From the early days of computing, many individuals have recognized that algebras provide interesting mathematical models for at least some aspects of programs. In mathematics, an algebra consists of a set (called the carrier of the algebra), together with a finite set of total functions that have the carrier set as their common codomain. The algebras we learn in school, however, are usually those derived from number theory and programs are more diverse, if not richer, than operations on numbers. A somewhat more abstract notion, called signature algebras, has been used for some time to to model abstract data types [GTW78]. A signature defines a set of typed operator symbols without specifying functions that would be the actual operators. Thus a signature defines a class of algebras, namely the algebras whose operators conform to the typing constraints imposed by the signature. Signature algebras have been helpful in understanding the issues involved in abstract dat
From Algebras and Coalgebras to Dialgebras
, 2001
"... This paper investigates the notion of dialgebra, which generalises the notions of algebra and coalgebra. We show that many (co)algebraic notions and results can be generalised to dialgebras, and investigate the essential dierences between (co)algebras and arbitrary dialgebras. ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
This paper investigates the notion of dialgebra, which generalises the notions of algebra and coalgebra. We show that many (co)algebraic notions and results can be generalised to dialgebras, and investigate the essential dierences between (co)algebras and arbitrary dialgebras.
Decomposing Typed Lambda Calculus Into a Couple of Categorical Programming Languages
- Proc. CTCS , Lect. Notes in Computer Science 953
, 1995
"... . We give two categorical programming languages with variable arrows and associated abstraction/reduction mechanisms, which extend the possibility of categorical programming [Hag87, CF92] in practice. These languages are complementary to each other -- one of them provides a first-order programming s ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
. We give two categorical programming languages with variable arrows and associated abstraction/reduction mechanisms, which extend the possibility of categorical programming [Hag87, CF92] in practice. These languages are complementary to each other -- one of them provides a first-order programming style whereas the other does higherorder -- and are "children" of the simply typed lambda calculus in the sense that we can decompose typed lambda calculus into them and, conversely, the combination of them is equivalent to typed lambda calculus. This decomposition is a consequence of a semantic analysis on typed lambda calculus due to C. Hermida and B. Jacobs [HJ94]. 1 Introduction There have been several attempts applying category theory to designing programming languages directly, especially to typed functional programming languages, since category theory itself has been a typed functional language for various mathematics. If one (possibly a programmer or a mathematician) can regard a cat...
A View on Implementing Processes: Categories of Circuits
, 1996
"... . We construct a category of circuits: the objects are alphabets and the morphisms are deterministic automata. The construction differs in several respects from the bicategories of circuits appearing previously in the literature: it is parameterized by a monad which allows flexibility in the emergen ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
. We construct a category of circuits: the objects are alphabets and the morphisms are deterministic automata. The construction differs in several respects from the bicategories of circuits appearing previously in the literature: it is parameterized by a monad which allows flexibility in the emergent notion of process. We focus on the circuits which arise from a distributive category and the exception monad. These circuits are partial in that they may, based on their state, choose to abort on some inputs. Consequently, certain circuits determine languages, and safety and liveness properties with respect to these languages are captured by circuit equations. Actually, the notions of safety and liveness arise abstractly in any copy category. Extracting the category of circuits which are both safe and live corresponds to the extensive completion of a distributive copy category. Partial circuits coincide with elements of the terminal coalgebra of a specific datatype. The co--induction princ...
Programming with inductive and co-inductive types
, 1992
"... Abstract We look at programming with inductive and co-inductive datatypes, which are inspired theoretically by initial algebras and final co-algebras, respectively. A predicative calculus which incorporates these datatypes as primitive constructs is presented. This calculus allows reduction sequence ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Abstract We look at programming with inductive and co-inductive datatypes, which are inspired theoretically by initial algebras and final co-algebras, respectively. A predicative calculus which incorporates these datatypes as primitive constructs is presented. This calculus allows reduction sequences which are significantly more efficient for two dual classes of common programs than do previous calculi using similar primitives. Several techniques for programming in this calculus are illustrated with numerous examples. A short survey of related work is also included.
Algebras versus coalgebras
- Appl. Categorical Structures, DOI
, 2007
"... Algebras and coalgebras are fundamental notions for large parts of mathematics. The basic constructions from universal algebra are now expressed in the language of categories and thus are accessible to classical algebraists and topologists as well as to logicians and computer scientists. Some of the ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
Algebras and coalgebras are fundamental notions for large parts of mathematics. The basic constructions from universal algebra are now expressed in the language of categories and thus are accessible to classical algebraists and topologists as well as to logicians and computer scientists. Some of them have developed specialised parts of the theory and often reinvented constructions already known in a neighbouring area. One purpose of this survey is to show the connection between results from different fields and to trace a number of them back to some fundamental papers in category theory from the early 70’s. Another intention is to look at the interplay between algebraic and coalgebraic notions. Hopf algebras are one of the most interesting objects in this setting. While knowledge of algebras and coalgebras are folklore in general category theory, the notion of Hopf algebras is usually only considered for monoidal categories. In the course of the text we do suggest how to overcome this defect by defining a Hopf monad on an arbitrary category as a monad and comonad satisfying some compatibility conditions and inducing an equivalence between

