Reference. Algorithmics

Cite

Cite as @bird-2021-algorithmics (helia, typst) · \cite{bird-2021-algorithmics} (LaTeX)
BibTeX
bibtex · 1 line
@inbook{bird-2021-algorithmics, title={Algorithmics}, ISBN={9783030817015}, ISSN={1868-422X}, url={http://dx.doi.org/10.1007/978-3-030-81701-5_3}, DOI={10.1007/978-3-030-81701-5_3}, booktitle={Advancing Research in Information and Communication Technology}, publisher={Springer International Publishing}, author={Bird, Richard and Gibbons, Jeremy and Hinze, Ralf and Höfner, Peter and Jeuring, Johan and Meertens, Lambert and Möller, Bernhard and Morgan, Carroll and Schrijvers, Tom and Swierstra, Wouter and Wu, Nicolas}, year={2021}, pages={59–98} }
hayagriva YAML (typst)
yaml · 26 lines
bird-2021-algorithmics:
  type: chapter
  title: Algorithmics
  author:
  - Bird, Richard
  - Gibbons, Jeremy
  - Hinze, Ralf
  - Höfner, Peter
  - Jeuring, Johan
  - Meertens, Lambert
  - Möller, Bernhard
  - Morgan, Carroll
  - Schrijvers, Tom
  - Swierstra, Wouter
  - Wu, Nicolas
  date: 2021
  page-range: 59-98
  url: http://dx.doi.org/10.1007/978-3-030-81701-5_3
  serial-number:
    doi: 10.1007/978-3-030-81701-5_3
    isbn: '9783030817015'
    issn: 1868-422X
  parent:
    type: book
    title: Advancing Research in Information and Communication Technology
    publisher: Springer International Publishing
Cites 202 works (12 here)
With notes (12)

The School of Squiggol: A History of the Bird–Meertens Formalism gibbons-2020-the

DOI

Relational algebra by way of adjunctions gibbons-2018-relational

Bulk 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.
PDF · DOI · pldb

Adjoint folds and unfolds—An extended study hinze-2013-adjoint

DOI

Just do it: simple monadic equational reasoning gibbons-2011-just

PDF · DOI · pldb

Total parser combinators danielssonTotalParserCombinators2010

A monadic parser combinator library which guarantees termination of parsing, while still allowing many forms of left recursion, is described. The library’s interface is similar to those of many other parser combinator libraries, with two important differences: one is that the interface clearly specifies which parts of the constructed parsers may be infinite, and which parts have to be finite, using dependent types and a combination of induction and coinduction; and the other is that the parser type is unusually informative.

The library comes with a formal semantics, using which it is proved that the parser combinators are as expressive as possible. The implementation is supported by a machine-checked correctness proof.

PDF · DOI · pldb

The essence of the Iterator pattern gibbons-2009-the

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.
PDF · DOI · pldb

Applicative programming with effects mcbride-2008-applicative

In this article, we introduce Applicative functors – an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this article, introducing the applicative pattern by diverse examples, then abstracting it to define the Applicative type class and introducing a bracket notation that interprets the normal application syntax in the idiom of an Applicative functor. Furthermore, we develop the properties of applicative functors and the generic operations they support. We close by identifying the categorical structure of applicative functors and examining their relationship both with Monads and with Arrow.
PDF · DOI · pldb

Datatype-Generic Programming gibbons-2007-datatype

DOI

The view from the left mcbride-2004-the

Pattern matching has proved an extremely powerful and durable notion in functional programming. This paper contributes a new programming notation for type theory which elaborates the notion in various ways. First, as is by now quite well-known in the type theory community, definition by pattern matching becomes a more discriminating tool in the presence of dependent types, since it refines the explanation of types as well as values. This becomes all the more true in the presence of the rich class of datatypes known as inductive families (Dybjer, 1991). Secondly, as proposed by Peyton Jones (1997) for Haskell, and independently rediscovered by us, subsidiary case analyses on the results of intermediate computations, which commonly take place on the right-hand side of definitions by pattern matching, should rather be handled on the left. In simply-typed languages, this subsumes the trivial case of Boolean guards; in our setting it becomes yet more powerful. Thirdly, elementary pattern matching decompositions have a well-defined interface given by a dependent type; they correspond to the statement of an induction principle for the datatype. More general, user-definable decompositions may be defined which also have types of the same general form. Elementary pattern matching may therefore be recast in abstract form, with a semantics given by translation. Such abstract decompositions of data generalize Wadler’s (1987) notion of ‘view’. The programmer wishing to introduce a new view of a type 𝑇 , and exploit it directly in pattern matching, may do so via a standard programming idiom. The type theorist, looking through the Curry–Howard lens, may see this as proving a theorem , one which establishes the validity of a new induction principle for 𝑇 . We develop enough syntax and semantics to account for this high-level style of programming in dependent type theory. We close with the development of a typechecker for the simply-typed lambda calculus, which furnishes a view of raw terms as either being well-typed, or containing an error. The implementation of this view is ipso facto a proof that typechecking is decidable.
PDF · DOI · pldb

Polytypic values possess polykinded types hinze-2002-polytypic

DOI

Dependent types in practical programming xi-1999-dependent

PDF · DOI · pldb

Kleene algebra with tests kozen1997kleene

We introduce Kleene algebra with tests, an equational system for manipulating programs. We give a purely equational proof, using Kleene algebra with tests and commutativity conditions, of the following classical result: every while program can be simulated by a while program with at most one while loop. The proof illustrates the use of Kleene algebra with tests and commutativity conditions in program equivalence proofs.
PDF · DOI · pldb
External (190)
bird-2021-algorithmics reference entries/refs/bird-2021-algorithmics/bird-2021-algorithmics.hel