{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,6]],"date-time":"2025-11-06T20:00:29Z","timestamp":1762459229330,"version":"3.41.2"},"reference-count":1,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","license":[{"start":{"date-parts":[[2014,9,3]],"date-time":"2014-09-03T00:00:00Z","timestamp":1409702400000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/arxiv.org\/licenses\/nonexclusive-distrib\/1.0"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"abstract":"<jats:p>Abbott, Altenkirch, Ghani and others have taught us that many parameterized\ndatatypes (set functors) can be usefully analyzed via container representations\nin terms of a set of shapes and a set of positions in each shape. This paper\nbuilds on the observation that datatypes often carry additional structure that\ncontainers alone do not account for. We introduce directed containers to\ncapture the common situation where every position in a data-structure\ndetermines another data-structure, informally, the sub-data-structure rooted by\nthat position. Some natural examples are non-empty lists and node-labelled\ntrees, and data-structures with a designated position (zippers). While\ncontainers denote set functors via a fully-faithful functor, directed\ncontainers interpret fully-faithfully into comonads. But more is true: every\ncomonad whose underlying functor is a container is represented by a directed\ncontainer. In fact, directed containers are the same as containers that are\ncomonads. We also describe some constructions of directed containers. We have\nformalized our development in the dependently typed programming language Agda.<\/jats:p>","DOI":"10.2168\/lmcs-10(3:14)2014","type":"journal-article","created":{"date-parts":[[2014,11,14]],"date-time":"2014-11-14T09:40:57Z","timestamp":1415958057000},"source":"Crossref","is-referenced-by-count":8,"title":["When is a container a comonad?"],"prefix":"10.46298","volume":"Volume 10, Issue 3","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-6595-2756","authenticated-orcid":false,"given":"Danel","family":"Ahman","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9036-8252","authenticated-orcid":false,"given":"James","family":"Chapman","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1297-0579","authenticated-orcid":false,"given":"Tarmo","family":"Uustalu","sequence":"additional","affiliation":[]}],"member":"25203","published-online":{"date-parts":[[2014,9,3]]},"reference":[{"key":"818:not-found"}],"container-title":["Logical Methods in Computer Science"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/lmcs.episciences.org\/894\/pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/lmcs.episciences.org\/894\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,4,11]],"date-time":"2023-04-11T19:58:47Z","timestamp":1681243127000},"score":1,"resource":{"primary":{"URL":"https:\/\/lmcs.episciences.org\/894"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2014,9,3]]},"references-count":1,"URL":"https:\/\/doi.org\/10.2168\/lmcs-10(3:14)2014","relation":{"is-same-as":[{"id-type":"arxiv","id":"1408.5809","asserted-by":"subject"},{"id-type":"doi","id":"10.48550\/arXiv.1408.5809","asserted-by":"subject"}],"is-referenced-by":[{"id-type":"doi","id":"10.1007\/978-3-319-68953-1_8","asserted-by":"subject"}]},"ISSN":["1860-5974"],"issn-type":[{"type":"electronic","value":"1860-5974"}],"subject":[],"published":{"date-parts":[[2014,9,3]]},"article-number":"894"}}