Representing inductively defined sets by wellorderings in Martin-Löf's type theory
Theoretical Computer Science
Journal of Functional Programming
Containers: constructing strictly positive types
Theoretical Computer Science - Applied semantics: Selected topics
∂ for Data: Differentiating Data Structures
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
Comonadic Notions of Computation
Electronic Notes in Theoretical Computer Science (ENTCS)
LICS '09 Proceedings of the 2009 24th Annual IEEE Symposium on Logic In Computer Science
Proving properties about lists using containers
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
The essence of dataflow programming
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Categorical views on computations on trees
ICALP'07 Proceedings of the 34th international conference on Automata, Languages and Programming
Hi-index | 0.00 |
Abbott, Altenkirch, Ghani and others have taught us that many parameterized datatypes (set functors) can be usefully analyzed via container representations in terms of a set of shapes and a set of positions in each shape. This paper builds on the observation that datatypes often carry additional structure that containers alone do not account for. We introduce directed containers to capture the common situation where every position in a datastructure determines another datastructure, informally, the sub-datastructure rooted by that position. Some natural examples are non-empty lists and node-labelled trees, and datastructures with a designated position (zippers). While containers denote set functors via a fully-faithful functor, directed containers interpret fully-faithfully into comonads. But more is true: every comonad whose underlying functor is a container is represented by a directed container. In fact, directed containers are the same as containers that are comonads. We also describe some constructions of directed containers. We have formalized our development in the dependently typed programming language Agda.