Searching for authors named "Jeremy Gibbons" – sorted by Relevance.
-
Unbounded Spigot Algorithms for the Digits of π
- Rabinowitz and Wagon (in American Mathematical Monthly 102(3):195--203, 1995) present a spigot algorithm for computing the digits of #. A spigot algorithm yields its outputs incrementally, and does not reuse them after producing them. Their algorithm is inherently bounded ; it requires a commitme
- Add To MetaCart
-
Metamorphisms: Streaming Representation-Changers
- Unfolds generate data structures, and folds consume them. A hylomorphism is a fold after an unfold, generating then consuming a virtual data structure. A metamorphism is the opposite composition, an unfold after a fold; typically, it will convert from one data representation to another. In general,
- Add To MetaCart
-
Calculating Functional Programs
- A good way of developing a correct program is to calculate it from its specification. Functional programming languages are especially suitable for this, because their referential transparency greatly helps calculation. We discuss the ideas behind program calculation, and illustrate with an examp
- Cited by 24 (7 self) – Add To MetaCart
-
Conditionals in Distributive Categories
- In a distributive category (a category in which the product distributes over the coproduct), coproducts can be used to model conditional expressions. We develop such a theory of conditionals. 1 Introduction The category Set of sets and total functions is a distributive category [1], which is to say
- Cited by 3 (0 self) – Add To MetaCart
-
Design Patterns as Higher-Order Datatype-Generic Programs
- Design patterns are reusable abstractions in object-oriented software. However, using current programming languages, these elements can only be expressed extra-linguistically: as prose, pictures, and prototypes. We believe that this is not inherent in the patterns themselves, but evidence of a lack
- Cited by 5 (2 self) – Add To MetaCart
-
An Initial-Algebra Approach to Directed Acyclic Graphs
- . The initial-algebra approach to modelling datatypes consists of giving constructors for building larger objects of that type from smaller ones, and laws identifying di#erentways of constructing the same object. The recursive decomposition of objects of the datatype leads directly to a recursiv
- Cited by 4 (0 self) – Add To MetaCart
-
Formal Methods: Why Should I Care? - The development of the T800 transputer floating-point unit
- The term `formal methods' is a general term for precise mathematically-based techniques used in the development of computer systems, both hardware and software. This paper discusses formal methods in general, and in particular describes their successful role in specifying, constructing and proving c
- Cited by 3 (0 self) – Add To MetaCart
-
Deriving Tidy Drawings of Trees
- The tree-drawing problem is to produce a `tidy' mapping of 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 cri
- Cited by 5 (3 self) – Add To MetaCart
-
Streaming Representation-Changers
- Unfolds generate data structures, and folds consume them.
- Cited by 2 (0 self) – Add To MetaCart
-
Generic Downwards Accumulations
- . A downwards accumulation is a higher-order operation that distributes information downwards through a data structure, from the root towards the leaves. The concept was originally introduced in an ad hoc way for just a couple of kinds of tree. We generalize the concept to an arbitrary regular d
- Cited by 16 (2 self) – Add To MetaCart

