Data structures and program transformation
Science of Computer Programming
Algebra of programming
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Initial Algebra Semantics and Continuous Algebras
Journal of the ACM (JACM)
Generic downwards accumulations
Science of Computer Programming - Special issue on mathematics of program construction
Introduction to Functional Programming
Introduction to Functional Programming
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Codifying Guarded Definitions with Recursive Schemes
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
Polymorphic Type Schemes and Recursive Definitions
Proceedings of the 6th Colloquium on International Symposium on Programming
MPC '98 Proceedings of the Mathematics of Program Construction
A Typed Lambda Calculus with Categorical Type Constructors
Category Theory and Computer Science
Simulating quantified class constraints
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Algebra of Programming by Richard Bird and Oege de Moor, Prentice Hall, 1996 (dated 1997).
Journal of Functional Programming
Disciplined, efficient, generalised folds for nested datatypes
Formal Aspects of Computing
Two-level types and parameterized modules
Journal of Functional Programming
Substitution in non-wellfounded syntax with variable binding
Theoretical Computer Science - Selected papers of CMCS'03
Iteration and coiteration schemes for higher-order and nested datatypes
Theoretical Computer Science - Foundations of software science and computation structures
Functional pearl: streams and unique fixed points
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Parametric datatype-genericity
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Initial algebra semantics is enough!
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
AMAST'10 Proceedings of the 13th international conference on Algebraic methodology and software technology
From grammars and automata to algebras and coalgebras
CAI'11 Proceedings of the 4th international conference on Algebraic informatics
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Towards a categorical foundation for generic programming
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
A foundation for GADTs and inductive families: dependent polynomial functor approach
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
Folds and unfolds are at the heart of the algebra of programming. They allow the cognoscenti to derive and manipulate programs rigorously and effectively. Fundamental laws such as fusion codify basic optimisation principles. However, most, if not all, programs require some tweaking to be given the form of an (un-) fold, and thus make them amenable to formal manipulation. In this paper, we remedy the situation by introducing adjoint folds and unfolds. We demonstrate that most programs are already of the required form and thus are directly amenable to manipulation. Central to the development is the categorical notion of an adjunction, which links adjoint (un-) folds to standard (un-) folds. We discuss a number of adjunctions and show that they are directly relevant to programming.