FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
A Generalization of Short-Cut Fusion and its Correctness Proof
Higher-Order and Symbolic Computation
MPC '98 Proceedings of the Mathematics of Program Construction
Abstract Syntax and Variable Binding
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Parametric polymorphism and operational equivalence
Mathematical Structures in Computer Science
Perfect trees and bit-reversal permutations
Journal of Functional Programming
Journal of Functional Programming
Journal of Functional Programming
de Bruijn notation as a nested datatype
Journal of Functional Programming
Disciplined, efficient, generalised folds for nested datatypes
Formal Aspects of Computing
Monadic augment and generalised short cut fusion
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Iteration and coiteration schemes for higher-order and nested datatypes
Theoretical Computer Science - Foundations of software science and computation structures
Foundations for structured programming with GADTs
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Journal of Functional Programming
Recursion on Nested Datatypes in Dependent Type Theory
CiE '08 Proceedings of the 4th conference on Computability in Europe: Logic and Theory of Algorithms
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Initial Algebra Semantics for Cyclic Sharing Structures
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A principled approach to programming with nested types in Haskell
Higher-Order and Symbolic Computation
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Adjoint folds and unfolds: or: scything through the thicket of morphisms
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Fibrational induction rules for initial algebras
CSL'10/EACSL'10 Proceedings of the 24th international conference/19th annual conference on Computer science logic
Algebraic Specialization of Generic Functions for Recursive Types
Electronic Notes in Theoretical Computer Science (ENTCS)
Attribute Grammars as Recursion Schemes over Cyclic Representations of Zippers
Electronic Notes in Theoretical Computer Science (ENTCS)
A library writer's guide to shortcut fusion
Proceedings of the 4th ACM symposium on Haskell
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
Adjoint folds and unfolds-An extended study
Science of Computer Programming
Hi-index | 0.00 |
Initial algebra semantics is a cornerstone of the theory of modern functional programming languages. For each inductive data type, it provides a fold combinator encapsulating structured recursion over data of that type, a Church encoding, a build combinator which constructs data of that type, and a fold/build rule which optimises modular programs by eliminating intermediate data of that type. It has long been thought that initial algebra semantics is not expressive enough to provide a similar foundation for programming with nested types. Specifically, the folds have been considered too weak to capture commonly occurring patterns of recursion, and no Church encodings, build combinators, or fold/build rules have been given for nested types. This paper overturns this conventional wisdom by solving all of these problems.