52 citations found. Retrieving documents...
Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In John Hughes, editor, Functional Programming Languages and Computer Architecture, volume 523 of Lecture Notes in Computer Science, pages 124--144. Springer-Verlag, 1991.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents  Next 50

Generic Validation of Structural Content with Parametric Modules - Chuang (2001)   (Correct)

....We are investigating whether ML like module languages are expressive enough to model these mechanisms. Backhouse, Jansson, and Jeuring, and Meertens have written a detailed introduction to generic programming [6] See also the introduction to fold unfold by Meijer, Fokkinga, and Paterson [13], as well as work on using fold unfold for structuring and reasoning about program semantics by Hutton [12] Our extension of simple fold to simultaneous fold seems new. Most work about generic programming in the functional programming research community seems to rely on the mechanism of type ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and bared wire. In John Hughes, editor, Functional Programming Languages and Computer Architecture, pages 124--144, August 1991. Lecture Notes in Computer Science, Volume 523, Springer--Verlag.


Shortcut Fusion for Accumulating Parameters Zip-like Functions - Svenningsson (2002)   (4 citations)  (Correct)

....But how does it work The whole story begins with two functions, foldr and build. Let s start by looking at foldr. The function foldr is rather well known to the functional programming community. It has several names such as reduce and accumulate. It is known to be the catamorphism for lists [MFP91]. It can be defined as follows: foldr f n [ n foldr f n (x:xs) f x (foldr f n xs) Informally foldr goes through the list replaces every cons by its first argument (f) and replaces nil by its second argument (n) Next, we look at the function build which is less well known and rather ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. In John Hughes, editor, Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture (FPCA), volume 523 of LNCS. Springer-Verlag, 1991.


On Modular Transformation of Structural Content - Chuang, Lin (2003)   (Correct)

....theory [16] Our approach is algebraic [8] and can be viewed as extending the Bird Meertens formalism [7, 17] to functions that map between two sets of mutually recursive data types. In this paper, we freely use the notations of Meijer, Fokkinga, and Paterson when writing fold unfold functions [18]. We have prototyped the theory developed in this paper in Objective Caml [3] a functional language that supports both a polymorphic type scheme and a parametric module system. Our construction is highly modular and generic. It is generic because it is parameterized by DTD expressions. See [6] ....

....Let s = P s, t = Qt, and u = Ru be DTDs, and let F , G, and H be arityadjusting functors. The following diagram illustrates that an unfold function [ g) immediately followed by a fold function ( f can be fused together. The fused function, f, g] g) is known as hylomorphism [18]. Fs # down t Hu QHu Q( f Fact 6.1. f, g] f Q[ f, g] g. See [18] The following diagram illustrates the situation where a fold function can be fused with another function to become yet another fold function. PGt w k f # Pw Pk Fact 6.2. k = ....

[Article contains additional citation context not shown here]

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and bared wire. In Functional Programming Languages and Computer Architecture, pages 124--144, August 1991. Lecture Notes in Computer Science, Volume 523.


The Calculation of a Polytypic Parser - Huisman (1996)   (7 citations)  (Correct)

.... with optimization techniques so that, e.g. a calculated parser can compete with a hand constructed one 74 ffl By combining parsers and unparsers we can make a function that transforms a text from one format into another format (for example from latex to html) Meijer, Fokkinga and Patterson [MFP91] called the composition of a catamorphism after an anamorphism a hylomorphism. Swierstra and de Moor [SdM93] explained how the intermediate datastructures that resulted from the anamorphism and to which the catamorphism would be applied, could be made virtual, which means that they are not really ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses envelopes and barbed wire. In John Hughes, editor, Proceedings Functional Programming and Computer Architecture. Springer Verlag, 1991. Volume 523 of Lecture Notes in Computer Science.


Using Catamorphisms, Subtypes and Monad Transformers for.. - Duponcheel (1995)   (Correct)

....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: in section 2 we show how to use catamorphisms for handling syntax in a modular ....

....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: in section 2 we show how to use catamorphisms for handling syntax in a modular way. In section 3 we briefly show how to handle semantics. Section 4 presents some components of a modular calculus interpreter which is similar to the one ....

[Article contains additional citation context not shown here]

Erik Meijer, Maarten Fokkinga and Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. In John Hughes, editor, Proc. Conference on Functional Programming and Computer Architecture. Springer-Verlag, June 1991. Lecture Notes in Computer Science 523. 9


Alias Types for Recursive Data Structures - Walker, Morrisett (2000)   (67 citations)  (Correct)

....there is little or no extra space available for storing control information, so minimizing the overhead of the traversal is a must. Recent work by Sobel and Friedman [37] has shown how to automatically transform certain continuation passing style programs, those generated by anamorphisms [23], into link reversal algorithms. Here we give an example how to encode a link reversal algorithm in our calculus. For this application, we will use the de nition of trees from Sect. 2. T ree = hS(1)i [ 9[ L ; R j f L 7 ; R 7 g] hS(2) ptr( L ) ptr( R )i T ree = hS(1)i [ 9[ L ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes, and barbed wire. In ACM Conference on Functional Programming and Computer Architecture, volume 523 of Lecture Notes in Computer Science, Berlin, 1991. Springer-Verlag.


Strictification of Lazy Functions - Saraiva, Swierstra, Kuiper, Pennings (1996)   (Correct)

....scheduled. It has furthermore been noticed by [KS87, Joh87] that there exists a direct translation from attribute grammars into this class of circular programs. Those acquainted with catamorphisms will furthermore recognise a catamorphims which returns a higher order type in the above program [MFP91]. In recent years we have been interested in the incremental evaluation of (higher order) attribute grammars [VSK91, SV91, PSV92, Pen94] The main aspect of the method being used is that attribute grammars are transformed into large sets of mutually recursive strict functions, the calls to which ....

Erik Meyer, Maarten Fokkinga, and Ross Patterson. Functional programming with bananas, lenses and barbed wire. In Functional Programming Languages and Computer Architecture, 1991.


Generation of Efficient Algorithms for Maximum Marking Problems - Sasano   (Correct)

....by generating linear time algorithms for several examples. In Chapter 7, we discuss related work. In Chapter 8, we make our concluding remarks. 13 Chapter 2 Preliminaries In this chapter we brie y review the notational conventions and some basic concepts of program calculation [Bir87, MFP91, BdM96] used in this thesis. 2.1 Recursive Data Types To simplify the presentation and proof of the optimization theorem in Chapter 4, we restrict ourselves to considering polynomial data types. And to avoid categorical notations, we describe polynomial data types in the following form: D = C ....

....into one of these polynomial data types. This will be demonstrated in Chapter 4. 14 For each data constructor C i , we de ne F i by F i f (e; x 1 ; x n i ) e; f x 1 ; f x n i ) 2. 2 Catamorphism Catamorphisms, one of the most important concepts in program calculation [MFP91, SF93, BdM96] form a class of important recursive functions over a given data type. They are the functions that promote through the data constructors. For example, for the type of lists, given e and , there exists a unique catamorphism cata satisfying the following equations: cata [ e ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In Proceedings of the 5th International Conference on Functional Programming Languages and Computer Architecture (FPCA'91), volume 523 of Lecture Notes in Computer Science, pages 124-144, Cambridge, Massachusetts, August 1991. ACM Press.


Alias Types for Recursive Data Structures - Walker, Morrisett (2000)   (67 citations)  (Correct)

....there is little or no extra space available for storing control information, so minimizing the overhead of the traversal is a must. Recent work by Sobel and Friedman [37] has shown how to automatically transform certain continuation passing style programs, those generated by anamorphisms [23], into linkreversal algorithms. Here we give an example how to encode a link reversal algorithm in our calculus. For this application, we will use the definition of trees from section 2. T ree = ff:hS(1)i [ 9[ae L ; ae R j fae L 7 ff; ae R 7 ffg] hS(2) ptr(aeL) ptr(aeR)i T ree 0 = ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes, and barbed wire. In ACM Conference on Functional Programming and Computer Architecture, volume 523 of Lecture Notes in Computer Science, Berlin, 1991. Springer-Verlag.


Internally Typed Second-Order Term Graphs - Kahl (1998)   (2 citations)  (Correct)

....the respective systems. Although the examples can still be constructed and drawn in HOPS, none of them has been implemented so far because of the problems with second order unification. 8. 1 Recursive Datatypes and Polytypic Programming The essential feature of polytypic programming see e.g. [8] is an explicit recursion operator encapsulating a second order variable on the type side; this variable stands for some appropriate functor, and the whole construct then stands for the (usually) least fixed point of that functor. The basic functions necessary for programming on these ....

Erik Meijer, Maarten Fokkinga, Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. In John Hughes (ed.), Functional Programming Languages and Computer Architecture, 5th ACM Conference, pages 124--144. LNCS 523. Springer Verlag, 1991.


Functional Programming with Overloading and Higher-Order.. - Jones (1995)   (35 citations)  (Correct)

....catamorphism and there is a dual notion of an anamorphism. It is common to use the notation (jOEj) for a catamorphism, and db( ec for an anamorphism. Inspired by the shape of the brackets used here, the use of these operators has been described as functional programming with bananas and lenses [17]. The remainder of this section shows how these ideas can be implemented directly using constructor classes. These ideas are dealt with in more detail elsewhere in this volume. A more detailed overview of our implementation can be found elsewhere [18] We start by defining a datatype for ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In 5th ACM conference on Functional Programming Languages and Computer Architecture, pages 124--144, New York, 1991. Springer-Verlag. Lecture Notes in Computer Science, 523.


An Implementation of Reynolds' Defunctionalization Method for a.. - Bell (1993)   (Correct)

....E is the value of the variable x in the meta language. For hh x yii to be well typed, x must be an erep. So if x evaluates to App(Id f ; Id z ) the program fragment represents the expression (f z) y. 3. 2 Control Structure A fold function (also known as a reduce function or catamorphism [MFP91]) is a useful control structure for performing computations on values in a sum of products datatype. There is a fold function specific to each such datatype. The arguments to a fold function include a set of accumulator functions and a value in the datatype. Each accumulator function calculates ....

Erik Meijer, Maarten Fokkinga, and Ross Patterson. Functional programming with bananas, lenses, envelopes, and barbed wire. In Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture, Cambridge, MA, August 1991. Springer Verlag. Lecture Notes in Computer Science Volume 523.


An Intermediate Meta-Language for Program Transformation - Tullsen, Hudak (1998)   (6 citations)  (Correct)

....have reversibility yet, but if we could replace ) ep with = in the above rule we would have a reversible rule. If we did so we would have this rule C[f.D[f] g.E[g] if C[D[f] E[C[f] C[ strict which is valid, it is simply a free theorem [22] of . This theorem is found in numerous places [1, 7, 20, 13]; we take its name, Fix Point Fusion, from Meijer et al. [13] where the power of the theorem is exploited considerably: most of their transformations are instances of this one general theorem. So, we have accomplished our goal: we can do expression procedure transformations with one reversible ....

....rule we would have a reversible rule. If we did so we would have this rule C[f.D[f] g.E[g] if C[D[f] E[C[f] C[ strict which is valid, it is simply a free theorem [22] of . This theorem is found in numerous places [1, 7, 20, 13] we take its name, Fix Point Fusion, from Meijer et al. [13] where the power of the theorem is exploited considerably: most of their transformations are instances of this one general theorem. So, we have accomplished our goal: we can do expression procedure transformations with one reversible rule using the Fix point Fusion theorem. The advantages to ....

[Article contains additional citation context not shown here]

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In John Hughes, editor, Functional Programming Languages and Computer Architecture, pages 124--144. Springer Verlag, June 1991. LNCS 523.


Back to Basics: Deriving Representations Changers Without.. - Hutton, Meijer (1994)   (6 citations)  Self-citation (Meijer)   (Correct)

....When we come to do induction over the argument of evalb, however, it is more convenient to have evalb defined using explicit recursion, rather than using foldr. Modern calculational programmers avoid the labour of inductive proofs by using the so called unique extension property (UEP) of foldr [19]. In the present situation, the effort of setting things up so that the UEP can be used is no less bother than an induction. Moreover, one of the aims of this paper is to make the techniques available to a wide audience, so we don t want to use a perhaps unfamiliar technique like UEP when it ....

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In John Hughes, editor, Proceedings FPCA '91, number 523 in LNCS. Springer- Verlag, 1991.


Fission for Program Comprehension - Jeremy Gibbons Oxford   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In John Hughes, editor, Functional Programming Languages and Computer Architecture, volume 523 of Lecture Notes in Computer Science, pages 124--144. Springer-Verlag, 1991.


Streaming Representation-Changers - Gibbons (2004)   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In John Hughes, editor, Functional Programming Languages and Computer Architecture, volume 523 of Lecture Notes in Computer Science, pages 124--144. Springer-Verlag, 1991.


Programming with Inductive and Co-Inductive Types - Greiner (1992)   (6 citations)  (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, Ross Paterson. Functional Programming with Banana, Lenses, Envelopes and Barbed Wire. In Proceedings of the International Conference on Functional Programming Languages and Computer Architecture, Lecture Notes in Computer Science 523, ed. John Hughes, pages 124--144. 1991.


Alias Types for Recursive Data Structures - Walker, Morrisett (2000)   (67 citations)  (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes, and barbed wire. In ACM Conference on Functional Programming and Computer Architecture, 1991. Also published in Lecture Notes in Computer Science, 523, Springer-Verlag.


Alias Types for Recursive Data Structures - Extended Version David   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes, and barbed wire. In ACM Conference on Functional Programming and Computer Architecture, 1991. Also published in Lecture Notes in Computer Science, 523, Springer-Verlag.


Streaming Representation-Changers - Gibbons (2004)   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In John Hughes, editor, Functional Programming Languages and Computer Architecture, volume 523 of Lecture Notes in Computer Science, pages 124--144. Springer-Verlag, 1991.


Streaming Algorithms (Extended Abstract) - Gibbons   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In John Hughes, editor, LNCS 523: Functional Programming Languages and Computer Architecture, pages 124--144. Springer-Verlag, 1991.


Recursion Patterns as Hylomorphisms - Cunha (2003)   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In J. Hughes, editor, Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture (FPCA'91), volume 523 of LNCS. Springer-Verlag, 1991.


Monad Comprehensions: A Versatile Representation for Queries - Grust (2003)   (Correct)

No context found.

17 Erik Meijer, Marten M. Fokkinga, and Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. In Proc. of the ACM Conference on Functional Programming and Computer Architecture (FPCA), number 523 in Lecture Notes in Computer Science (LNCS), pages 124--144, Cambridge, USA, 1991. Springer Verlag.


To The Graduate School: - The Members Of   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In J. Hughes, editor, Proceedings 5th ACM Conf. on Functional Programming Languages and Computer Architecture, FPCA'91, Cambridge, MA, USA, 26--30 Aug 1991, volume 523, pages 124--144. Springer-Verlag, Berlin, 1991.


Constructively Characterizing Fold and Unfold - Weber, Caldwell   (Correct)

No context found.

Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In J. Hughes, editor, Proceedings 5th ACM Conf. on Functional Programming Languages and Computer Architecture, FPCA'91, Cambridge, MA, USA, 26-30 Aug 1991, volume 523, pages 124-144. Springer-Verlag, Berlin, 1991.

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