| Grant Malcolm (1990). Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen. |
....data constructors, we find uncurried ones more suitable for our purpose. 2.3. ALGEBRAS AND FOLDS 11 on the other hand, is a G algebra with carrier ListInt 1 , where cat is the uncurried variant of , concatenating two lists represented by datatype ListInt 1 . An important result shown in [58] is that for any F belonging to a certain class of functors (which fortunately includes the examples we are currently interested in) all the F algebras themselves form a category whose objects are F algebras and arrows are homomorphisms between F algebras. Furthermore, initial objects in such ....
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Groningen University, The Netherlands, 1990.
....action upon the algebra. This algebraic approach allows syntactic features to be combined. Moreover this algebraic approach can be combined with the monadic approach in a natural way. Functions which are defined by making use of functors and algebras are sometimes referred to as catamorphisms. In [9] Malcolm shows the usefulness of catamorphisms for functional programming. In [1] Meijer et al. brought Malcolms work to the attention of the mainstream functional programming community. In [2] Meijer and Hutton present the ideas of [1] in an accessible way. This paper is organised as follows: ....
Grant Malcolm. Algebraic Data Types and Program Transformation, Science of Computer Programming, Vol 14, pp. 255--280, September, 1990.
....we mean the very generic recursion scheme captured by the comonadic catamorphism combinator. This scheme is a unification of a number of particular generic and specific recursion schemes. The product comonad, for example, gives us the asymmetric form of mutual iteration (zygomorphisms, [2]) including the most important special case, primitive recursion (paramorphisms, 3] The generalized stream comonad gives course of value iteration (histomorphisms, 1] and an interesting generalization permitting, for instance, recursive calls of the definiendum on rearrangements of ....
G R Malcolm. Algebraic data types and program transformation. PhD thesis, Dept of Computer Science, Univ of Groningen, 1990.
.... by Maurice van Keulen [11] The categorical approach to program construction originates from work by Bird and Meertens since 1987, and later Backhouse and his team; the approach is described in a semi formal setting by Meijer et al. 14] and more formally in a series of PhD theses by Malcolm [12, 13], Fokkinga [7, 5, 6, 8] de Moor [15] Jeuring [10] Recently Grust [9] 10 has followed this approach for studying query optimisation, and a categorical theory for Moa will have close connection with his work. The categorical approach to programming has by now evolved to generic programming [1] ....
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, University of Groningen, The Netherlands, 1990.
....as the e#ective topos or the category of # sets. c #2001 Published by Elsevier Science B. V. Gibbons, Hutton and Altenkirch 2 Fold and unfold In this section we review the categorical treatment of fold and unfold in terms of initial algebras and final coalgebras; for further details see [18,20,14,1]. Suppose that we fix a category C and a functor F : C#C.Analgebra is pair (A, f) comprising an object A and an arrow f : FA# A,anda homomorphism h : A, f) # (B,g) from one such algebra to another is an arrow h : A # B such that the following square commutes: FA Fh ## f ## FB g ## A ....
....type can be written using fold. More precisely, when can an arbitrary arrow h : F # A be written in the form h = fold f for some other arrow f : FA# A A technically complete, but nonetheless unsatisfactory, answer to this question is provided by the universal property of the fold operator [18], which can be stated as the following equivalence: h = fold f # h in = f Fh The # direction of this equivalence states that fold f is a homomorphism from the initial algebra (F, in) to another algebra (A, f ) while the # direction states that any other homomorphism h between these ....
G. Malcolm. Algebraic data types and program transformation. Science of Computer Programming, 14(2-3):255--280, September 1990.
....building blocks of the modular interpreter are forced to be in one monolithic program, which severely compromises the code reusability. Duponcheel [2] was the rst one to note this, and showed that it can be solved by using parameterized types to construct data types, and by using catamorphisms [3] to construct and combine operations. Both cases call for advanced programming techniques such as explicit subtyping, implicit parameter passing [4] catamorphisms, and a Haskell [5] style of type classes [6] In a work wehave been doing to construct modular type systems [7] higher order explicit ....
Grant Malcolm. Algebraic Data Types and Program Transformation. ####### ## ######## ###########, 14:255-280, January 1995.
.... words, the rst component of the unique pair (f; g) consisting of morphisms f : F A and g : F E such that f in F = F h f; g i g in F = F g F F F h f;g i ## in F ## F f ## F (A E) ## A F F Fg ## in F ## F g ## FE ## E The morphism so speci ed is what Malcolm [1990] calls the F zygomorphism of ; we denote it by hj ji F . The recursion scheme that produces zygomorphisms is best thought of as a semi mutual iteration where two functions are de ned simultaneously, one being the function of interest and the other an auxiliary function. An important ....
Malcolm, G. R. 1990. Algebraic Data Types and Program Transformation. PhD Thesis, Dept. of Computer Science, Univ. of Groningen.
....: A I such that for all h : A I , h = f] h : f FAlg in : 14) So, f] is the unique homomorphism to algebra f from algebra in . We call ( f] the catamorphism of f . 19 2 The banana bracket notation for catamorphisms (as it is a ectionately known) was introduced by Malcolm [19, 20]. Malcolm was also the rst to express the unicity property using an equivalence in this way. It is a mathematically trivial device but it helps enormously in reasoning about catamorphisms. Note that the functor F is also a parameter of ( f] but the notation does not make this explicit. This is ....
....not new. For instance in the well known de nition of the computable functions on the natural numbers the primitive recursive functions are a proper subclass of the class of all computable functions. Therefore, a number of researchers have proposed generalisations of the para 23 equation. Malcolm [19] de ned the zygo equation, which type of equation was generalised by Fokkinga [11] to the mutu equation X : X = R F:X 4F:X in [ 20) It can be shown that such an equation has a unique solution. Fokkinga s proof requires that R is a function. The proof we give later allows R to be an ....
G. Malcolm. Algebraic data types and program transformation. PhD thesis, Groningen University, 1990.
....Haskell implementation of the schemes and the examples considered. In Sections 8 and 9, we brie y comment on related work and conclude. COMONADIC ITERATION 3 2. Functional programming in categories The categorical approach to functional programming (for constructive algorithmics treatments, see [Malcolm 1990, Fokkinga 1992, Bird and de Moor 1997] is based on the idea of identifying a world of programming with some xed category C: the types are the objects and the functions are the morphisms. In the case of strong functional programming, product types are then identi ed (categorical) products, sum ....
.... words, the rst component of the unique pair (f; g) consisting of morphisms f : F A and g : F E such that f in F = F h f; g i g in F = F g F F F h f;g i ## in F ## F f ## F (A E) ## A F F Fg ## in F ## F g ## FE ## E The morphism so speci ed is what Malcolm [1990] calls the F zygomorphism of ; we denote it by hj ji F . The recursion scheme that produces zygomorphisms is best thought of as a mutual iteration where two functions are de ned simultaneously in an asymmetric fashion and, in the end of the day, one is returned, the other discarded. An ....
Malcolm, G. R. 1990. Algebraic Data Types and Program Transformation. PhD Thesis, Dept. of Computer Science, Univ. of Groningen.
....fold, and a dual condition for unfold. The conditions are simple, practically useful, and generic in the underlying datatype. 1 2 Fold and unfold In this section we review the categorical treatment of fold and unfold in terms of initial algebras and final coalgebras; for further details see [11, 12, 8, 1]. Suppose that we fix a category C and a functor F : C # C. An algebra is pair (A, f) comprising an object A and an arrow f : F A # A, and a homomorphism h : A, f) # (B, g) from one such algebra to another is an arrow h : A # B such that the following square commutes: F A F h f ....
....type can be written using fold. More precisely, when can an arbitrary arrow h : F # A be written in the form h = fold f for some other arrow f : FA # A A technically complete, but nonetheless unsatisfactory, answer to this question is provided by the universal property of the fold operator [11], which can be stated as the following equivalence: h = fold f # h in = f F h The # direction of this equivalence states that fold f is a homomorphism from the initial algebra (F, in) to another algebra (A, f ) while the # direction states that any other homomorphism h between these ....
G. Malcolm. Algebraic data types and program transformation. Science of Computer Programming, 14(2-3):255--280, September 1990.
....we mean the very generic recursion scheme captured by the comonadic catamorphism combinator. This scheme is a unification of a number of particular generic and specific recursion schemes. The product comonad, for example, gives us the asymmetric form of mutual iteration (zygomorphisms, [2]) including the most important special case, primitive recursion (paramorphisms, 3] The generalized stream comonad gives course of value iteration (histomorphisms, 1] and an interesting generalization permitting, for instance, recursive calls of the definiendum on rearrangements of ....
G R Malcolm. Algebraic data types and program transformation. PhD thesis, Dept of Computer Science, Univ of Groningen, 1990.
....of the recursion process, but for such problems there does not seem to be any advantage in doing so. Thirdly, there may be other ways to express the generation of solutions without using a limit operator. Suitable frameworks include relational catamorphisms (folds) and anamorphisms (unfolds) [9], matroids [3] and greedoids [6, 7, 8] and there is much well developed theory about these structures to assist the programmer. Such theory can be of great assistance in helping the programmer to develop an algorithm once the problem at hand has been fitted into the structure. 4.2 Advantages of ....
G. R. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Groningen University, 1990.
.... of the better known take lemma [Bird and Wadler 1988] Alternatively, we can adopt the operational approach to semantics, in which case the basic proof method is coinduction [Gordon 1995] However, the use of inductive or coinductive methods can often be avoided altogether by using fusion [Malcolm 1990], an algebraic law that encapsulates a common pattern of proof. This article is a tutorial on the above methods for proving properties of corecursive programs. It is aimed at a reader who is familiar with the basics of recursive programming and proof, but no prior knowledge of corecursive ....
.... and null is the predicate that determines whether a list is empty or not: iterate f = unfold false id f map f = unfold null (f Delta head) tail Proof methods for corecursive programs Delta 9 The basic method for proving properties of programs defined using unfold is its universal property [Malcolm 1990], which is given by the following equivalence: f = unfold p h t , 8x : f x = if p x then [ else h x : f (t x ) This equivalence states that unfold p h t is not just a solution to its defining equation, but is in fact the unique solution. The left to right direction is trivially true, because ....
[Article contains additional citation context not shown here]
Malcolm, G. 1990. Algebraic Data Types and Program Transformation. Ph. D. thesis, Groningen University.
....they are not easily amenable to formal proofs of correctness due to extensive use of indexing notations. 5.1. 3 Bird Meertens Formalism The Bird Meertens formalism [Bir89, Mee86, Ski94] has its roots in FP, but is more general since it applies to a number of different categorical data types [Mal90] including linear lists. In the following we present a simple version of the formalism based on linear lists (constructed with the concatenation operator ) basic functions and higher order functions. The key concept in the formalism is a list homomorphism, an algebraic property that a function ....
Grant Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Rijkuniversiteit Groeningen, September 1990. 146
...., F0 , FF0 , Delta Delta Delta The category Fun has everything needed to make this incantation work: Fun is co complete (in fact, bi complete) and all regular functors F on Fun are cocontinuous. The proof for polynomial functors can be found in [14] and the extension to type functors is in [13]. Moreover, the category Nat (Fun) inherits co completeness from the base category Fun (see [11, 7] We believe that all regular higher order functors are co continuous, though we have not yet found a proof of this in the literature, so the existence of datatypes like Nest and Bush is not likely ....
G. Malcolm. Algebraic Data Types and Program Transformation. Ph.D thesis, University of Groningen, The Netherlands, 1990.
....corresponding to the paths from the root to the leaves. Policies correspond to the complete history of decisions made, whereas our partial solutions are more general, and can contain this information and more; also they can use more general datatypes than strings and other initial datatypes (Malcolm, 1990). The straightforward implementation of the specification would involve generating all 8 the leaves of the tree from the input. In order to consider how we might reduce the amount of computation, we consider how the set of completed solutions might be generated from the input. We use a ....
G. R. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Groningen University, 1990.
....transpose, twice = h l h k h i m:i:ki :l ii n tuple reduce = h l h k m:l:k ii n tuple reduce = h l m:l i n tuple eta = m n tuple eta 4. 5 Generic Catamorphisms It was obvious that Haskell s zip family of functions could bene t from n tuples; but interestingly, catamorphisms [10, 11, 13] can also bene t from n tuples, giving catamorphisms over mutually recursive data structures. First, a x point operator for terms, fix, and a x point operator at the type level, must be added to the calculus. Normally, the kind of is ( i.e. it takes a functor of kind ....
....is the curry family of functions curry2 : a b c) a,b) c curry3 : a b c d) a,b,c) d . but there is no way to give a type to a generic curry. Extending the zip calculus to type this generic curry is an area for future research. 5. 2 Relation to Other Work Polytypic programming [10, 11, 13] has similar goals to this work (e.g. PolyP [8] and Functorial ML [9] However, as just noted, the genericity of polytypism and n tuples appear orthogonal. As seen in section 4.5, with both polytypism and n tuples some very generic programs and laws can be written. Two approaches that achieve ....
Grant Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, University of Groningen, 1990.
.... by Maurice van Keulen [11] The categorical approach to program construction originates from work by Bird and Meertens since 1987, and later Backhouse and his team; the approach is described in a semi formal setting by Meijer et al. 14] and more formally in a series of PhD theses by Malcolm [12, 13], Fokkinga [7, 5, 6, 8] de Moor [15] Jeuring [10] Recently Grust [9] has followed this approach for studying query optimisation, and a categorical theory for MOA will have close connection with his work. The categorical approach to programming has by now evolved to generic programming [1] 13 ....
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, University of Groningen, The Netherlands, 1990.
....call. For example, the Nest datatype, which represents perfectly balanced binary trees, can be de ned in Haskell by data Nest a = Nil j Cons(a; Nest (a; a) 1) The standard semantic de nition of recursively de ned datatypes is as initial algebras in the category Set of sets and total functions [6]. It was shown in [1] that this theory is inadequate to describe nested datatypes. Instead, one solution proposed there was to de ne them as initial algebras in the functor category Nat(Set) with objects all endofunctors on Set and arrows all natural transformations between them. It was observed, ....
....with upper bounds. De nition 4. 3 (colimit) The pair (A; is the colimit of the right chain (c n : Cn ) if it is a cocone, and for all cocones (T ; of (c n : Cn ) there is an arrow = A T such that for all f : A T , f = 8n 0 : n = f n ) 7) The notation = comes from [6], and we will use the convention that composition ( binds more tightly than = We will write Colim(cn : Cn ) for the colimit of (c n : Cn ) For a category representing a preorder, colimits coincide with least upper bounds. Example 4.1 (colimits in Set) It is shown in [7] that every right chain ....
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen, 1990.
....fold simplifies the process of proving properties of the map function. 3 The universal property of fold As with the fold operator itself, the universal property of fold also has its origins in recursion theory. The first systematic use of the universal property in functional programming was by Malcolm (1990a) in his generalisation of Bird and Meerten s theory of lists (Bird, 1989; Meertens, 1983) to arbitrary regular datatypes. For finite lists, the universal property of fold can be stated as the following equivalence between two definitions for a function g that processes lists: g [ v g (x : ....
....a single fold . Following this interpretation, this property is called the fusion property of the fold operator, and can be stated as follows: h w = v h (g x y) f x (h y) h Delta fold g w = fold f v The first systematic use of the fusion property in functional programming was again by Malcolm (1990a) generalising earlier work by Bird and Meertens (Bird, 1989; Meertens, 1983) As with the universal property, the primary application of the fusion property is as a proof principle that avoids the need for inductive proofs. In fact, for many practical examples the fusion property is often ....
[Article contains additional citation context not shown here]
Malcolm, Grant. (1990b). Algebraic data types and program transformation. Science of Computer Programming, 14(2-3), 255--280.
....fold simplifies the process of proving properties of the map function. 3 The universal property of fold As with the fold operator itself, the universal property of fold also has its origins in recursion theory. The first systematic use of the universal property in functional programming was by Malcolm (1990a) in his generalisation of Bird and Meerten s theory of lists (Bird, 1989; Meertens, 1983) to arbitrary regular datatypes. For finite lists, the universal property of fold can be stated as the following equivalence between two definitions for a function g that processes lists: g [ v g (x : ....
....a single fold . Following this interpretation, this property is called the fusion property of the fold operator, and can be stated as follows: h w = v h (g x y) f x (h y) h Delta fold g w = fold f v The first systematic use of the fusion property in functional programming was again by Malcolm (1990a) generalising earlier work by Bird and Meertens (Bird, 1989; Meertens, 1983) As with the universal property, the primary application of the fusion property is as a proof principle that avoids the need for inductive proofs. In fact, for many practical examples the fusion property is often ....
[Article contains additional citation context not shown here]
Malcolm, Grant. (1990a). Algebraic data types and program transformation. Ph.D. thesis, Groningen University.
....known calculational paradigm is the Bird Meertens formalism, or to use its more colloquial name, Squiggol [1] Programs in the Squiggol style work upon trees, lists, bags and sets, the so called Boom hierarchy. The framework was uniformly extended to cover arbitrary recursive types by Malcolm in [2], by means of the F algebra paradigm of type definition, and resulting catamorphic programming style. More recently, Backhouse et al. [3] have made a further generalisation by choosing to work within the relational calculus. Choosing to work with relations rather than functions allows ....
....We introduce in this section three orderings on types; these orderings allow us to make precise such relationships. When used as a constructor for trees, is not subject to any laws. When used with lists however, we require that be associative. For example, we require that [1] [2] [3] 1] 2] 3] More formally, while the two expressions form distinct (singleton) equivalence classes in the type of trees, they are the members of the same equivalence class in the type of lists. In standard list notation, this equivalence class is denoted by [1; 2; 3] With ....
[Article contains additional citation context not shown here]
Grant Malcolm. Algebraic data types and program transformation. Ph.D. thesis, Groningen University, 1990.
.... of application areas, including algorithm construction [1, 11, 2] hardware construction [7, 6] compiler construction [12] and automatic program transformation [20, 3, 8] Using ideas from category theory, fold has been uniformly generalised from lists to a large class of recursive datatypes [10, 14]. Appears in Proc. 3rd ACM SIGPLAN International Conference on Functional Programming, Baltimore, Maryland, September 1998. In this paper we are concerned with the application of recursion operators in the area of program semantics. One of the most popular styles of semantics is the ....
....is produced (as opposed to processed) in a certain recursive manner. The dual proof principle, again called universality, captures a common pattern of coinductive proof concerning programs that produce lists. Unfold has also been generalised from lists to a large class of recursive datatypes [10, 14]. While applications of fold abound, relatively little attention has been given to unfold in the functional programming community. Another popular style of semantics is the operational approach [17] in which the meaning of programs is defined using a transition relation that captures single ....
Grant Malcolm. Algebraic data types and program transformation. Science of Computer Programming, 14(2-3):255--280, September 1990.
....as a Node, as was done in the last definition of invokeT . 5 General Polynomial Types The transformations in the preceding sections generalize to types other than lists and trees. In fact, most procedures that act as generators of any polynomially typed data (sums of product or record types [7]) can use link inversion, instead of stack space. In particular, our sequence of transformations works for every finite output anamorphism [8] to be defined more precisely in Section 6. The transformations in the following three sections are based on those in the sources already cited in the ....
Grant Malcolm. Algebraic data types and program transformation. Science of Computer Programming, 14(2--3):255--280, September 1990.
....and Meertens [6, 22] developed a calculus (nicknamed Squiggol) of recursion functionals on lists, using which efficient functional programs can be derived from specifications by using equational reasoning. Squiggol was subsequently generalised from lists to polynomial (sumof product) datatypes [20] by using the categorical approach of modelling recursive datatypes as fixed points of functors [21, 14] This approach allows foldr, unfold and other recursion functionals to be uniformly generalised from lists to polynomial datatypes. The generalised functionals are given special names (such as ....
.... theory and Squiggol) to the category cpo of cpos and continuous functions (the world of cpo categories [12] and lazy functional programming) However, a serious deficiency of the bananas paper and more generally, the work of the Squiggol community is its limitation to polynomial datatypes [20]. This precludes the use of exponentials (function spaces) whereas it is central to functional programming that functions are first class values, and so exponentials should be able to be used freely in datatype definitions. So to truly bring Squiggol closer to functional programming, the theory ....
Grant Malcolm. Algebraic data types and program transformation. Science of Computer Programming, 14(2-3):255--280, September 1990.
....known calculational paradigm is the Bird Meertens formalism, or to use its more colloquial name, Squiggol [2] Programs in the Squiggol style work upon trees, lists, bags and sets, the so called Boom hierarchy. The framework was uniformly extended to cover arbitrary recursive types by Malcolm in [3], by means of the F algebra paradigm of type definition, and resulting catamorphic programming style. More recently, Backhouse et al. [4] have made a further generalisation by choosing to work within the relational calculus. Of fundamental importance to Backhouse s relational approach is the ....
....We introduce in this section three orderings on types; these orderings allow us to make precise such relationships. When used as a constructor for trees, is not subject to any laws. When used with lists however, we require that be associative. For example, we require that [1] 2] [3]) 1] 2] 3] More formally, while the two expressions form distinct (singleton) equivalence classes in the type of trees, they are the members of the same equivalence class in the type of lists. In standard list notation, this equivalence class is denoted by [1; 2; 3] With uplists the ....
[Article contains additional citation context not shown here]
Grant Malcolm. Algebraic data types and program transformation. Ph.D. thesis, Groningen University, 1990.
.... we have focussed on the unfold operator for lists, but our approach naturally generalises to operators that encapsulate more general patterns of corecursive definition (for example, primitive corecursion [25] and to any datatype that can be defined as the greatest fixpoint of a functor [17]. ACKNOWLEDGEMENTS The second author is supported by EPSRC grant Structured Recursive Programming, and ESPRIT Working Group Applied Semantics. ....
Grant Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Groningen University, 1990.
....colimits; we have used the fact that B cocompleteness of a category is equivalent to the existence of an adjunction but the structure of the colimit functor or its upper adjoint has not entered the picture. This is in marked contrast to proofs given by others of the preservation of cocontinuity [16, 15] where details of the construction of a category of cocones plays a prominent role. This emphasises the more fundamental nature of the abstraction and fusion theorems. The abstraction and fusion theorems are not the only theorems that are needed to construct a rich (constructive) calculus of ....
G. Malcolm. Algebraic data types and program transformation. PhD thesis, Groningen University, 1990.
....are uniquely determined by their de ning equations. Familiarity with basic category theory is assumed. 2. Semantics of non parametrised datatypes In a categorical setting, non parametrised inductive datatypes are introduced by taking categorical least xed points of appropriate functors (see e.g. [Lam70, BdM97, Hag87, Mal90a, MA86]) Given a suitable category C, the least xed point of a functor F : C C, if it exists, is an object T of C for which the arrow : F T T is an initial algebra in the category of F algebras. The objects of this category are arrows F A A of C, and the arrows are homomorphisms ....
Grant R. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen, 1990.
....arrow ( f] 2A I such that for all h2A I , h = f] h2 f FAlg in : 76) So, f] is the unique homomorphism to algebra f from algebra in . We call ( f] the catamorphism of f . 2 The banana bracket notation for catamorphisms (as it is a ectionately known) was introduced by Malcolm [Mal90a, Mal90b] Malcolm was also the rst to express the unicity property using an equivalence in this way. It is a mathematically trivial device but it helps enormously in reasoning about catamorphisms. Note that the functor F is also a parameter of ( f] but the notation does not make this explicit. ....
G. Malcolm. Algebraic data types and program transformation. PhD thesis, Groningen University, 1990.
....to Arr:C from D , defined on arrows by j:f = F:f ; G:f) In fact these two notions are equivalent: any functor to Arr:C from D is a natural transformation between its components. This also justifies the dot notation j ffl H , introduced above, as a composition of functors. Following Malcolm [14, 15] and Fokkinga [5] we denote the unique arrow in a category C to an object x from an initial object a by the banana bracket notation ( C ; x = a] That is, a is initial in C if and only if, for all arrows f and all objects x in C , f 2x C a j f = C ; x = a] The notion in category ....
G. Malcolm. Algebraic data types and program transformation. PhD thesis, Groningen University, 1990.
....arrow to x from a: The corresponding concept in lattice theory is least element. The constructive element in the definition of initial object is that there exists an arrow from the object to each object in the category. The coherence requirement is the uniqueness of such arrows. Following Malcolm [17, 18] and Fokkinga [8] we denote the unique arrow in a category C to an object x from an initial object a by ( C ; x = a] That is, a is initial in C if and only if, for all arrows f and all objects x in C , f 2x C a j f = C ; x = a] 2.3) Most often we will drop the parameter C . In ....
....we have used the fact that B cocompleteness of a category is equivalent to the existence of an adjunction but the structure of the colimit functor or its upper adjoint has not entered the picture. This is in marked contrast to proofs given by others of the preservation of cocontinuity [16, 17] where details of the construction of a category of cocones plays a prominent role. This emphasises the more fundamental nature of the abstraction and fusion theorems. Category Theory June 12, 1998 6.4. The Rolling Rule 89 6.4 The Rolling Rule Given two complete partially ordered sets C and D ....
G. Malcolm. Algebraic data types and program transformation. PhD thesis, Groningen University, 1990.
....is a datatype like list or tree a function from types to types rather than a type like integer , list of integer or tree of string . The emergence of polytypism as a viable research field has occurred gradually over a number of years. A landmark was the formulation by Malcolm [20, 21, 22] of a theorem expressing when two computations could be fused into one computation. Malcolm s fusion theorem was polytypic in that it was parameterised by a datatype and so could be instantiated in a variety of ways. Malcolm exploited the polytypic notion of a catamorphism and introduced ....
G. Malcolm. Algebraic data types and program transformation. PhD thesis, Groningen University, 1990.
....by calculation. In spite of the focus on lists, the intention, from the start, has been to contribute to the development of constructive algorithmics as a discipline for calculational program construction encompassing much more than the theory of lists, however fertile by itself. Malcolm [24] [25] [26] showed how to generalise essential parts of the theory to other initial datatypes, based on a categorical approach (Manes and Arbib [27] Hagino [13] Fokkinga [7] 8] 11] honed the categorically inspired calculational techniques to a fine edge. While the theory developed by Malcolm and ....
....types of the form G. However, if G = F a, then G is F a, and the crush for F is indeed a catamorphism. An interesting connection to classic BMF is hh Phi; f ii List = Phi= f when Phi is the operator of a monoid. So we see that the catamorphism combinator ( introduced by Malcolm [24] [25] [26] and the present hh ii are different, incomparable, generalisations of Classic Cata TM . The most telling difference is the following. While ( itself is a polytypic combinator, its application to a body does in general not result in a polytypic function. In contrast, the application of ....
Grant Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, University of Groningen, 1990.
....only the existence of a logarithmic depth binary tree in the target architecture interconnection network. Then all communication can take place with nearest neighbors (and hence in constant time) Homomorphic skeletons have been built for most of the standard types: sets and bags [181] lists [31, 142, 186], trees [96] arrays [20, 21] molecules [180] and graphs [177] The homomorphic skeleton approach is simple and abstract, and the method of construction of data type homomorphisms automatically generates a rich environment for equational transformation. The communication pattern required for ....
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen, September 1990.
....and the discrimination required to destructure it. Such transformations have long been known to remove intermediate list structures, but Phil Wadler observed that the transformations could be generalized to structures of any freely constructed data type, calling it deforestation [Wad90, Mal90] There are two key observations about fusion and deforestation. One is that the recursion scheme used in defining functions that can be fused is often determined by the form of an algebraic data type, itself recursively defined. When this is the case, recursion analysis can be simplified. A ....
Grant Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, University of Groningen, 1990.
....such optimizations. The discovery of additional specializations of the fold and unfold factorizers to outfit a categorical programmer s toolkit in the sense hinted by David Turner [22] would further this goal. Also, optimizing via program transformations similar to those developed by Malcolm [15, 16] for general Hagino datatypes may be feasible. Finally, the current research surge in functional programming analysis from the perspectives of control, continuations, and partial evaluation might well be worthwhile in this setting. Cockett s recent investigations [3] indicate that attractive ....
G. Malcolm, Algebraic Data Types and Program Transformation. Ph.D. Thesis, University of Groningen (1990).
....algebra is unique up to isomorphism. Initial algebras are used to define data types, and there exist initial F algebras for many functors, but not all. The functor P does not have an initial algebra, but many functors on Fun do, for example polynomial functors on Fun. Malcolm in his thesis [Mal90] describes the (fairly weak) conditions on F for it to have an initial algebra. An initial F algebra is often denoted by ff, and ff is an isomorphism. The unique homomorphism from an initial F algebra to another F algebra fi is denoted by ( fi] F (though the F is often omitted where the context ....
G.R. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Groningen University, 1990.
No context found.
Grant Malcolm (1990). Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen.
No context found.
Malcolm, G.: Algebraic Data Types and Program Transformation, Science of Computer Programming, 14(2- 3), September 1990, 255--280.
No context found.
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Groningen University, Netherlands, 1990.
No context found.
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, University of Groningen, The Netherlands, 1990.
No context found.
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen, September 1990.
No context found.
G. Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, University of Groningen, The Netherlands, 1990.
No context found.
G. Malcolm. Algebraic data types and program transformation. Science of Computer Programming, 14(2--3):255--280, 1990.
No context found.
G. Malcolm. Algebraic data types and program transformation. PhD thesis, University of Groningen, 1990.
No context found.
G. Malcolm. Algebraic data types and program transformation. Science of Computer Programming, 14(2-3):255-280, 1990.
No context found.
Grant Malcolm #1990#. Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen.
No context found.
G. Malcolm. Algebraic data types and program transformation. PhD thesis, Groningen University, 1990.
No context found.
Grant Malcolm (1990). Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen.
First 50 documents Next 50
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC