VLDB 2026 Research / reviewers in the wild / expert
Jeremy Gibbons
dblp:53/1090
· DBLP profile ↗
62ranked-venue papers
31as first author
5since 2021 · last 2026
0000-0002-8426-9917ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 44 · 20 first-author · 4 since 2021Theory of computation · 18 · 10 first-author · 1 since 2021Databases, data management, data science and information retrieval · 2Systems, architecture and hardware · 1Applied, interdisciplinary, general and emerging computing · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Functional and Logic Programming (FLOPS 2024)
Jeremy Gibbons, Dale Miller 0001 |
Sci. Comput. Program. | 1 |
| 2025 | Turner, Bird, Eratosthenes: An eternal burning thread
Jeremy Gibbons |
J. Funct. Program. | 1 |
| 2022 | Breadth-First Traversal via Staging
Jeremy Gibbons, Donnacha Oisín Kidney, Tom Schrijvers, Nicolas Wu |
MPC | 1 |
| 2022 | Editorial
Jeremy Gibbons, Shriram Krishnamurthi |
J. Funct. Program. | 1 |
| 2021 | How to design co-programsabstractAbstract The observation that program structure follows data structure is a key lesson in introductory programming: good hints for possible program designs can be found by considering the structure of the data concerned. In particular, this lesson is a core message of the influential textbook “How to Design Programs” by Felleisen, Findler, Flatt, and Krishnamurthi. However, that book discusses using only the structure of input data for guiding program design, typically leading towards structurally recursive programs. We argue that novice programmers should also be taught to consider the structure of output data, leading them also towards structurally corecursive programs. Jeremy Gibbons |
J. Funct. Program. | 1 |
| 2019 | Coding with Asymmetric Numeral Systems
Jeremy Gibbons |
MPC | 1 |
| 2018 | What you needa know about Yoneda: profunctor optics and the Yoneda lemma (functional pearl)abstractProfunctor optics are a neat and composable representation of bidirectional data accessors, including lenses, and their dual, prisms. The profunctor representation exploits higher-order functions and higher-kinded type constructor classes, but the relationship between this and the familiar representation in terms of "getter" and "setter" functions is not at all obvious. We derive the profunctor representation from the concrete representation, making the relationship clear. It turns out to be a fairly direct application of the Yoneda Lemma, arguably the most important result in category theory. We hope this derivation aids understanding of the profunctor representation. Conversely, it might also serve to provide some insight into the Yoneda Lemma. Guillaume Boisseau, Jeremy Gibbons |
Proc. ACM Program. Lang. | 2 |
| 2018 | Relational algebra by way of adjunctionsabstractBulk types such as sets, bags, and lists are monads, and therefore support a notation for database queries based on comprehensions. This fact is the basis of much work on database query languages. The monadic structure easily explains most of standard relational algebra---specifically, selections and projections---allowing for an elegant mathematical foundation for those aspects of database query language design. Most, but not all: monads do not immediately offer an explanation of relational join or grouping, and hence important foundations for those crucial aspects of relational algebra are missing. The best they can offer is cartesian product followed by selection. Adjunctions come to the rescue: like any monad, bulk types also arise from certain adjunctions; we show that by paying due attention to other important adjunctions, we can elegantly explain the rest of standard relational algebra. In particular, graded monads provide a mathematical foundation for indexing and grouping, which leads directly to an efficient implementation, even of joins. Jeremy Gibbons, Fritz Henglein, Ralf Hinze, Nicolas Wu |
Proc. ACM Program. Lang. | 1 |
| 2017 | APLicative Programming with Naperian Functors
Jeremy Gibbons |
ESOP | 1 |
| 2017 | Programming with ornamentsabstractAbstract Dependently typed programming advocates the use of various indexed versions of the same shape of data, but the formal relationship amongst these structurally similar datatypes usually needs to be established manually and tediously. Ornaments have been proposed as a formal mechanism to manage the relationships between such datatype variants. In this paper, we conduct a case study under an ornament framework; the case study concerns programming binomial heaps and their operations — including insertion and minimum extraction — by viewing them as lifted versions of binary numbers and numeric operations. We show how current dependently typed programming technology can lead to a clean treatment of the binomial heap constraints when implementing heap operations. We also identify some gaps between the current technology and an ideal dependently typed programming language that we would wish to have for our development. Hsiang-Shang Ko, Jeremy Gibbons |
J. Funct. Program. | 2 |
| 2016 | Free delivery (functional pearl)abstractRemote procedure calls are computationally expensive, because network round-trips take several orders of magnitude longer than local interactions. One common technique for amortizing this cost is to batch together multiple independent requests into one compound request. Batching requests amounts to serializing the abstract syntax tree of a small program, in order to transmit it and run it remotely. The standard representation for abstract syntax is to use free monads; we show that free applicative functors are actually a better choice of representation for this scenario. Jeremy Gibbons |
Haskell | 1 |
| 2015 | Modules Over Monads and Their AlgebrasabstractModules over monads (or: actions of monads on endofunctors) are structures in which a monad interacts with an endofunctor, composed either on the left or on the right. Although usually not explicitly identified as such, modules appear in many contexts in programming and semantics. In this paper, we investigate the elementary theory of modules. In particular, we identify the monad freely generated by a right module as a generalisation of Moggi's resumption monad and characterise its algebras, extending previous results by Hyland, Plotkin and Power, and by Filinski and Stovring. Moreover, we discuss a connection between modules and algebraic effects: left modules have a similar feeling to Eilenberg–Moore algebras, and can be seen as handlers that are natural in the variables, while right modules can be seen as functions that run effectful computations in an appropriate context (such as an initial state for a stateful computation). Maciej Piróg, Nicolas Wu, Jeremy Gibbons |
CALCO | 3 |
| 2015 | Notions of Bidirectional Computation and Entangled State Monads
Faris Abou-Saleh, James Cheney, Jeremy Gibbons, James McKinna, Perdita Stevens |
MPC | 3 |
| 2015 | Domain specific modelling for clinical researchabstractThe value of integrated data relies upon common data points having an accessible, consistent interpretation; to achieve this at scale requires appropriate informatics support. This paper explains how a model-driven approach to software engineering and data management, in which software artefacts are generated automatically from data models, and models are used as metadata, can achieve this. It introduces a simple data modelling language, consistent with standard object modelling notations, together with a set of tools for model creation,maintenance, and deployment. It reports upon the application of this approach in the provision of informatics support for two large-scale clinical research initiatives. Jim Davies, Jeremy Gibbons, Adam Milward, David Milward, Seyyed Shah, Monika Solanki, James Welch |
DSM@SPLASH | 2 |
| 2015 | Conjugate Hylomorphisms - Or: The Mother of All Structured Recursion SchemesabstractThe past decades have witnessed an extensive study of structured recursion schemes. A general scheme is the hylomorphism, which captures the essence of divide-and-conquer: a problem is broken into sub-problems by a coalgebra; sub-problems are solved recursively; the sub-solutions are combined by an algebra to form a solution. In this paper we develop a simple toolbox for assembling recursive coalgebras, which by definition ensure that their hylo equations have unique solutions, whatever the algebra. Our main tool is the conjugate rule, a generic rule parametrized by an adjunction and a conjugate pair of natural transformations. We show that many basic adjunctions induce useful recursion schemes. In fact, almost every structured recursion scheme seems to arise as an instance of the conjugate rule. Further, we adapt our toolbox to the more expressive setting of parametrically recursive coalgebras, where the original input is also passed to the algebra. The formal development is complemented by a series of worked-out examples in Haskell. Ralf Hinze, Nicolas Wu, Jeremy Gibbons |
POPL | 3 |
| 2014 | Folding domain-specific languages: deep and shallow embeddings (functional Pearl)abstractA domain-specific language can be implemented by embedding within a general-purpose host language. This embedding may be deep or shallow, depending on whether terms in the language construct syntactic or semantic representations. The deep and shallow styles are closely related, and intimately connected to folds; in this paper, we explore that connection. Jeremy Gibbons, Nicolas Wu |
ICFP | 1 |
| 2014 | The CancerGrid experience: Metadata-based model-driven engineering for clinical trialsabstractThe CancerGrid approach to software support for clinical trials is based on two principles: careful curation of semantic metadata about clinical observations, to enable subsequent data integration, and model-driven generation of trial-specific software artefacts from a trial protocol, to streamline the software development process. This paper explains the approach, presents four varied case studies, and discusses the lessons learned. Jim Davies, Jeremy Gibbons, Steve Harris, Charles Crichton |
Sci. Comput. Program. | 2 |
| 2014 | Model-driven engineering of information systems: 10 years and 1000 versionsabstractThis paper reports upon ten years of experience in the development and application of model-driven technology. The technology in question was inspired by work on formal methods: in particular, by the B toolkit. It was used in the development of a number of information systems, all of which were successfully deployed in real world situations. The paper reports upon three systems: one that informed the design of the technology, one that was used by an internal customer, and one that is currently in use outside the development organisation. It records a number of lessons regarding the application of model-driven techniques. Jim Davies, Jeremy Gibbons, James Welch, Edward Crichton |
Sci. Comput. Program. | 2 |
| 2014 | Selected papers from Mathematics of Program Construction 2012
Jeremy Gibbons, Pablo Nogueira |
Sci. Comput. Program. | 1 |
| 2013 | Understanding idiomatic traversals backwards and forwardsabstractWe present new ways of reasoning about a particular class of effectful Haskell programs, namely those expressed as idiomatic traversals. Starting out with a specific problem about labelling and unlabelling binary trees, we extract a general inversion law, applicable to any monad, relating a traversal over the elements of an arbitrary traversable type to a traversal that goes in the opposite direction. This law can be invoked to show that, in a suitable sense, unlabelling is the inverse of labelling. The inversion law, as well as a number of other properties of idiomatic traversals, is a corollary of a more general theorem characterising traversable functors as finitary containers: an arbitrary traversable object can be decomposed uniquely into shape and contents, and traversal be understood in terms of those. Proof of the theorem involves the properties of traversal in a special idiom related to the free applicative functor. Richard S. Bird, Jeremy Gibbons, Stefan Mehner, Janis Voigtländer, Tom Schrijvers |
Haskell | 2 |
| 2013 | Unifying structured recursion schemesabstractFolds over inductive datatypes are well understood and widely used. In their plain form, they are quite restricted; but many disparate generalisations have been proposed that enjoy similar calculational benefits. There have also been attempts to unify the various generalisations: two prominent such unifications are the 'recursion schemes from comonads' of Uustalu, Vene and Pardo, and our own 'adjoint folds'. Until now, these two unified schemes have appeared incompatible. We show that this appearance is illusory: in fact, adjoint folds subsume recursion schemes from comonads. The proof of this claim involves standard constructions in category theory that are nevertheless not well known in functional programming: Eilenberg-Moore categories and bialgebras. Ralf Hinze, Nicolas Wu, Jeremy Gibbons |
ICFP | 3 |
| 2013 | Refactoring pattern matching
Meng Wang 0002, Jeremy Gibbons, Kazutaka Matsuda, Zhenjiang Hu 0002 |
Sci. Comput. Program. | 2 |
| 2011 | Just do it: simple monadic equational reasoningabstractOne of the appeals of pure functional programming is that it is so amenable to equational reasoning. One of the problems of pure functional programming is that it rules out computational effects. Moggi and Wadler showed how to get round this problem by using monads to encapsulate the effects, leading in essence to a phase distinction - a pure functional evaluation yielding an impure imperative computation. Still, it has not been clear how to reconcile that phase distinction with the continuing appeal of functional programming; does the impure imperative part become inaccessible to equational reasoning? We think not; and to back that up, we present a simple axiomatic approach to reasoning about programs with computational effects. Jeremy Gibbons, Ralf Hinze |
ICFP | 1 |
| 2011 | Incremental updates for efficient bidirectional transformationsabstractA bidirectional transformation is a pair of mappings between source and view data objects, one in each direction. When the view is modified, the source is updated accordingly. The key to handling large data objects that are subject to relatively small modifications is to process the updates incrementally. Incrementality has been explored in the semi-structured settings of relational databases and graph transformations; this flexibility in structure makes it relatively easy to divide the data into separate parts that can be transformed and updated independently. The same is not true if the data is to be encoded with more general-purpose algebraic datatypes, with transformations defined as functions: dividing data into well-typed separate parts is tricky, and recursions typically create interdependencies. In this paper, we study transformations that support incremental updates, and devise a constructive process to achieve this incrementality. Meng Wang 0002, Jeremy Gibbons, Nicolas Wu |
ICFP | 2 |
| 2011 | Formalisations and applications of BPMN
Peter Y. H. Wong, Jeremy Gibbons |
Sci. Comput. Program. | 2 |
| 2011 | Property specifications for workflow modelling
Peter Y. H. Wong, Jeremy Gibbons |
Sci. Comput. Program. | 2 |
| 2010 | Gradual Refinement
Meng Wang 0002, Jeremy Gibbons, Kazutaka Matsuda, Zhenjiang Hu 0002 |
MPC | 2 |
| 2010 | EditorialabstractI have just taken over from Richard Bird as editor of the Functional Pearls column in the Journal of Functional Programming . I'm keen to receive submissions; please do get in touch if you'd like to discuss a potential paper. Jeremy Gibbons |
J. Funct. Program. | 1 |
| 2010 | Scala for generic programmersabstractAbstract Datatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the form of type constructors such as ‘list of’. Most approaches to DGP are developed in pure functional programming languages such as Haskell. We argue that the functional object-oriented language Scala is in many ways a better choice. Not only does Scala provide equivalents of all the necessary functional programming features (such as parametric polymorphism, higher-order functions, higher-kinded type operations, and type- and constructor-classes), but it also provides the most useful features of object-oriented languages (such as subtyping, overriding, traditional single inheritance, and multiple inheritance in the form of traits). Common Haskell techniques for DGP can be conveniently replicated in Scala, whereas the extra expressivity provides some important additional benefits in terms of extensibility and reuse. We illustrate this by comparing two simple approaches in Haskell, pointing out their limitations and showing how equivalent approaches in Scala address some of these limitations. Finally, we present three case studies on how to implement in Scala real DGP approaches from the literature: Hinze's ‘Generics for the Masses’, Lämmel and Peyton Jones's ‘Scrap your Boilerplate with Class’, and Gibbons's ‘Origami Programming’. Bruno C. d. S. Oliveira, Jeremy Gibbons |
J. Funct. Program. | 2 |
| 2009 | Property Specifications for Workflow Modelling
Peter Y. H. Wong, Jeremy Gibbons |
IFM | 2 |
| 2009 | The essence of the Iterator patternabstractAbstract The Iterator pattern gives a clean interface for element-by-element access to a collection, independent of the collection's shape. Imperative iterations using the pattern have two simultaneous aspects: mapping and accumulating . Various existing functional models of iteration capture one or other of these aspects, but not both simultaneously. We argue that C. McBride and R. Paterson's applicative functors (Applicative programming with effects, J. Funct. Program. , 18 (1): 1–13, 2008), and in particular the corresponding traverse operator, do exactly this, and therefore capture the essence of the Iterator pattern. Moreover, they do so in a way that nicely supports modular programming. We present some axioms for traversal, discuss modularity concerns and illustrate with a simple example, the wordcount problem. Jeremy Gibbons, Bruno C. d. S. Oliveira |
J. Funct. Program. | 1 |
| 2008 | WSRF-Based Modeling of Clinical Trial Information for Collaborative Cancer ResearchabstractThe CancerGrid consortium is developing open- standards cancer informatics to address the challenges posed by modern cancer clinical trials. This paper presents the service-oriented software paradigm implemented in CancerGrid to derive clinical trial information management systems for collaborative cancer research across multiple institutions. Our proposal is founded on a combination of a clinical trial (meta)model and WSRF (Web Services Resource Framework), and is currently being evaluated for use in early phase trials. Although primarily targeted at cancer research, our approach is readily applicable to other areas for which a similar information model is available. Tianyi Zang, Radu Calinescu, Steve Harris, Andrew Tsui, Marta Z. Kwiatkowska, Jeremy Gibbons, Jim Davies, Peter Maccallum, Carlos Caldas |
CCGRID | 6 |
| 2008 | Metamodel-Based Generation of WSRF-Compliant SOA for Collaborative Cancer ResearchabstractCancer clinical trials pose significant challenges to the e-Science community. The information technology required to enable this kind of large-scale, collaborative science will need to support easy and rapid development and deployment of reliable and flexible software systems that enable syntactic, semantic and computational interoperability. CancerGrid, an e-Science consortium funded by the UK Medical Research Council, is addressing these challenges through the development of model-driven, service-oriented technology for cancer informatics. This poster presents recent significant efforts in CancerGrid, resulting in the metamodel-based automated generation of WSRF (Web Services Resource Framework) compliant trial management systems. The most important advantages of our approach are discussed. Tianyi Zang, Radu Calinescu, Steve Harris, Andrew Tsui, Charles Crichton, Marta Z. Kwiatkowska, Jeremy Gibbons, Jim Davies, James D. Brenton, Carlos Caldas |
eScience | 7 |
| 2008 | A Process Semantics for BPMN
Peter Y. H. Wong, Jeremy Gibbons |
ICFEM | 2 |
| 2008 | Unfolding Abstract Datatypes
Jeremy Gibbons |
MPC | 1 |
| 2008 | The visitor pattern as a reusable, generic, type-safe componentabstractThe VISITOR design pattern shows how to separate the structure of an object hierarchy from the behaviour of traversals over that hierarchy. The pattern is very flexible; this very flexibility makes it difficult to capture the pattern as anything more formal than prose, pictures and prototypes. Bruno C. d. S. Oliveira, Meng Wang 0002, Jeremy Gibbons |
OOPSLA | 3 |
| 2007 | Unifying Theories of Objects
Michael Anthony Smith, Jeremy Gibbons |
IFM | 2 |
| 2007 | Model-driven architecture for cancer researchabstractIt is a common phenomenon for research projects to collect and analyse valuable data using ad-hoc information systems. These costly-to-build systems are often composed of incompatible variants of the same modules, and record data in ways that prevent any meaningful result analysis across similar projects. We present a framework that uses a combination of formal methods, model-driven development and service-oriented architecture (SOA) technologies to automate the generation of data management systems for cancer clinical trial research, an area particularly affected by these problems. The SOA solution generated by the framework is based on an information model of a cancer clinical trial, and comprises components for both the collection and analysis of cancer research data, within and across clinical trial boundaries. While primarily targeted at cancer research, our approach is readily applicable to other areas for which a similar information model is available. Radu Calinescu, Steve Harris, Jeremy Gibbons, Jim Davies, Igor Toujilov, Sylvia B. Nagl |
SEFM | 3 |
| 2007 | Metamorphisms: Streaming representation-changers
Jeremy Gibbons |
Sci. Comput. Program. | 1 |
| 2006 | Fission for Program Comprehension
Jeremy Gibbons |
MPC | 1 |
| 2006 | Fast and loose reasoning is morally correctabstractFunctional programmers often reason about programs as if they were written in a total language, expecting the results to carry over to non-total (partial) languages. We justify such reasoning.Two languages are defined, one total and one partial, with identical syntax. The semantics of the partial language includes partial and infinite values, and all types are lifted, including the function spaces. A partial equivalence relation (PER) is then defined, the domain of which is the total subset of the partial language. For types not containing function spaces the PER relates equal values, and functions are related if they map related values to related values.It is proved that if two closed terms have the same semantics in the total language, then they have related semantics in the partial language. It is also shown that the PER gives rise to a bicartesian closed category which can be used to reason about values in the domain of the relation. Nils Anders Danielsson, John Hughes 0001, Patrik Jansson, Jeremy Gibbons |
POPL | 4 |
| 2006 | Functional Pearl: Enumerating the rationalsabstractEvery lazy functional programmer knows about the following approach to enumerating the positive rationals: generate a two-dimensional matrix (an infinite list of infinite lists), then traverse its finite diagonals (an infinite list of finite lists). Jeremy Gibbons, David R. Lester, Richard S. Bird |
J. Funct. Program. | 1 |
| 2005 | TypeCase: a design pattern for type-indexed functionsabstractA type-indexed function is a function that is defined for each member of some family of types. Haskell's type class mechanism provides collections of open type-indexed functions, in which the indexing family can be extended by defining a new type class instance but the collection of functions is fixed. The purpose of this paper is to present TypeCase: a design pattern that allows the definition of closed type-indexed functions, in which the index family is fixed but the collection of functions is extensible. It is inspired by Cheney and Hinze's work on lightweight approaches to generic programming. We generalise their techniques as a design pattern. Furthermore, we show that type-indexed functions with type-indexed types, and consequently generic functions with generic types, can also be encoded in a lightweight manner, thereby overcoming one of the main limitations of the lightweight approaches. Bruno C. d. S. Oliveira, Jeremy Gibbons |
Haskell | 2 |
| 2005 | Proof Methods for Corecursive Programs
Jeremy Gibbons, Graham Hutton |
Fundam. Informaticae | 1 |
| 2004 | Streaming Representation-Changers
Jeremy Gibbons |
MPC | 1 |
| 2004 | Disciplined, efficient, generalised folds for nested datatypesabstractAbstract. Nested (or non-uniform, or non-regular) datatypes have recursive definitions in which the type parameter changes. Their folds are restricted in power due to type constraints. Bird and Paterson introduced generalised folds for extra power, but at the cost of a loss of efficiency: folds may take more than linear time to evaluate. Hinze introduced efficient generalised folds to counter this inefficiency, but did so in a pragmatic way: he did not provide categorical or equivalent underpinnings, so did not get the associated universal properties for manipulating folds. We combine the efficiency of Hinze’s construction with the powerful reasoning tools of Bird and Paterson’s. Clare E. Martin, Jeremy Gibbons, Ian Bayley |
Formal Aspects Comput. | 2 |
| 2003 | On The Supervision and Assessment Of Part-Time Postgraduate Software Engineering ProjectsabstractThis paper describes existing practices in the supervision and assessment of projects undertaken by part-time, postgraduate students in Software Engineering. It considers this aspect of the learning experience, and the educational issues raised, in the context of existing literature-much of which is focussed upon the experience of full-time, undergraduate students. The importance of these issues will increase with the popularity of part-time study at a postgraduate level; the paper presents a set of guidelines for project supervision and assessment. Andrew C. Simpson, Andrew P. Martin, Jeremy Gibbons, Jim Davies, Steve McKeever |
ICSE | 3 |
| 2002 | Towards a Colimit-Based Semantics for Visual Programming
Jeremy Gibbons |
COORDINATION | 1 |
| 2001 | The generic approximation lemma
Graham Hutton, Jeremy Gibbons |
Inf. Process. Lett. | 2 |
| 2001 | On the semantics of nested datatypes
Clare E. Martin, Jeremy Gibbons |
Inf. Process. Lett. | 2 |
| 2000 | Generic downwards accumulations
Jeremy Gibbons |
Sci. Comput. Program. | 1 |
| 1999 | A Pointless Derivation of Radix SortabstractThis paper is about point-free (or ‘pointless’) calculations – calculations performed at the level of function composition instead of that of function application. We address this topic with the help of an example, namely calculating the radix-sort algorithm from a more obvious specification of sorting. The message that we hope to send is that point-free calculations are sometimes surprisingly simpler than the corresponding point-wise calculations. Jeremy Gibbons |
J. Funct. Program. | 1 |
| 1999 | Bridging the Algorithm Gap: A Linear-Time Functional Program for Paragraph Formatting
Oege de Moor, Jeremy Gibbons |
Sci. Comput. Program. | 2 |
| 1998 | The Under-Appreciated UnfoldabstractFolds are appreciated by functional programmers; the benefits of encapsulating common patterns of computation as higher-order operators are well-known and well understood. Their dual, unfolds, are nearly as well-known, but not nearly as well appreciated. We believe they deserve better. To illustrate, we present (indeed, we calculate) a number of algorithms for computing the breadth-first traversal of a tree. We specify breadth-first traversal in terms of level-order traversal, which we characterize first as a fold. The presentation as a fold is simple, but it is inefficient, and removing the inefficiency makes it no longer a fold. We calculate a characterization as an unfold from the characterization as a fold; this unfold is equally clear, but more efficient. We also calculate a characterization of breadth-first traversal directly as an unfold; this turns out to be the `standard' queue-based algorithm. Keywords: Program calculation, functional programming, fold, unfold, anamorphism, ... Jeremy Gibbons, Geraint Jones |
ICFP | 1 |
| 1998 | Polytypic Downwards Accumulations
Jeremy Gibbons |
MPC | 1 |
| 1996 | Deriving Tidy Drawings of TreesabstractAbstract The tree-drawing problem is to produce a ‘tidy’ mapping from elements of a tree to points in the plane. In this paper, we derive an efficient algorithm for producing tidy drawings of trees. The specification, the starting point for the derivations, consists of a collection of intuitively appealing criteria satisfied by tidy drawings. The derivation shows constructively that these criteria completely determine the drawing. Indeed, the criteria completely determine a simple but inefficient algorithm for drawing a tree, which can be transformed into an efficient algorithm using just standard techniques and a small number of inventive steps. The algorithm consists of an upwards accumulation followed by a downwards accumulation on the tree, and is further evidence of the utility of these two higher-order tree operations. Jeremy Gibbons |
J. Funct. Program. | 1 |
| 1996 | The Third Homomorphism TheoremabstractAbstract The Third Homomorphism Theorem is a folk theorem of the constructive algorithmics community. It states that a function on lists that can be computed both from left to right and from right to left is necessarily a list homomorphism – it can be computed according to any parenthesization of the list. We formalize and prove the theorem, and use it to improve an O ( n 2 ) sorting algorithm to O ( n log n ). Jeremy Gibbons |
J. Funct. Program. | 1 |
| 1996 | Computing Downwards Accumulations on Trees Quickly
Jeremy Gibbons |
Theor. Comput. Sci. | 1 |
| 1995 | An Initial-Algebra Approach to Directed Acyclic Graphs
Jeremy Gibbons |
MPC | 1 |
| 1994 | Efficient Parallel Algorithms for Tree Accumulations
Jeremy Gibbons, Wentong Cai 0001, David B. Skillicorn |
Sci. Comput. Program. | 1 |
| 1992 | Upwards and Downwards Accumulations on Trees
Jeremy Gibbons |
MPC | 1 |
| 1989 | Formal Derivation of a Pattern Matching Algorithm
Richard S. Bird, Jeremy Gibbons, Geraint Jones |
Sci. Comput. Program. | 2 |