Results 11  20
of
52
Software Design for Reliability and Reuse  A ProofOfConcept Demonstration
 IN CONFERENCE ON TRIADA ’94
, 1994
"... The Pacific Software Research Center is developing a new method to support reuse and introduce reliability into software. The method is based on design capture in domain specific design languages and automatic program generation using a reusable suite of program transformation tools. The transformat ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
The Pacific Software Research Center is developing a new method to support reuse and introduce reliability into software. The method is based on design capture in domain specific design languages and automatic program generation using a reusable suite of program transformation tools. The transformation tools, and a domain specific component generator incorporating them, are being implemented as part of a major project underway at the Oregon Graduate Institute of Science and Technology. The processes used in tool development and application of the method are being captured. Once completed, an experiment will be performed on the generator to assess its usability and flexibility. This paper describes the Software Design for Reliability and Reuse method and illustrates its application to the Message Translation and Validation domain, a problem identified by our sponsors so that our method can be compared directly to a previously existing stateoftheart solution based on code templates pr...
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 courseofvalues (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 13 (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 courseofvalue iteration and its dual, respectively, and argue that even these are helpful.
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 12 (10 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
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 10 (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.
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 9 (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
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 firstorder 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 firstorder 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 coinduction princ...