Abstract
Coinductive types model infinite structures unfolded on demand, like politicians’ excuses: for each attack, there is a defence but no likelihood of resolution. Representing such evolving processes coinductively is often more attractive than representing them as functions from a set of permitted observations, such as projections or finite approximants, as it can be tricky to ensure that observations are meaningful and consistent. As programmers and reasoners, we need coinductive definitions in our toolbox, equipped with appropriate computational and logical machinery.
Lazy functional languages like Haskell [18] exploit call-by-need computation to over-approximate the programming toolkit for coinductive data: in a sense, all data is coinductive and delivered on demand, or not at all if the programmer has failed to ensure the productivity of a program.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Abbott, M., Altenkirch, T., Ghani, N.: Containers - constructing strictly positive types. Theoretical Computer Science 342, 3–27 (2005); Applied Semantics: Selected Topics
Altenkirch, T., McBride, C., Swierstra, W.: Observational equality, now! In: Stump, A., Xi, H. (eds.) PLPV, pp. 57–68. ACM, New York (2007)
Altenkirch, T., Morris, P.: Indexed Containers. In: Proceedings of LICS (2009)
Bertot, Y., Castéran, P.: Interactive Theorem Proving And Program Development: Coq’Art: the Calculus of Inductive Constructions. Springer, Heidelberg (2004)
Cockett, R., Fukushima, T.: About Charity. Yellow Series Report No. 92/480/18, Department of Computer Science, The University of Calgary (June 1992)
Cockett, R., Spencer, D.: Strong categorical datatypes I. In: Seely, R.A.G. (ed.) International Meeting on Category Theory 1991, Canadian Mathematical Society Proceedings, AMS (1992)
Giménez, E.: Codifying guarded definitions with recursive schemes. In: Smith, J., Dybjer, P., Nordström, B. (eds.) TYPES 1994. LNCS, vol. 996, pp. 39–59. Springer, Heidelberg (1995)
Giménez, E.: Un Calcul de Constructions Infinies et son application à la vérification de systèmes communicants. PhD thesis, Ecole Normale Supérieure de Lyon (1996)
Gonthier, G.: A computer-checked proof of the Four-Colour theorem. Technical report, Microsoft Research (2005)
Hagino, T.: A Categorical Programming Language. PhD thesis, Laboratory for Foundations of Computer Science, University of Edinburgh (1987)
Hancock, P., Setzer, A.: Interactive programs in dependent type theory. In: Clote, P.G., Schwichtenberg, H. (eds.) CSL 2000. LNCS, vol. 1862, pp. 317–331. Springer, Heidelberg (2000)
Hancock, P., Setzer, A.: Interactive programs and weakly final coalgebras in dependent type theory. In: Crosilla, L., Schuster, P. (eds.) From Sets and Types to Topology and Analysis. Towards Practicable Foundations for Constructive Mathematics, Oxford, pp. 115–134. Clarendon Press (2005)
Hofmann, M.: Extensional concepts in intensional type theory. PhD thesis, Laboratory for Foundations of Computer Science, University of Edinburgh (1995), http://www.lfcs.informatics.ed.ac.uk/reports/95/ECS-LFCS-95-327/
McBride, C., McKinna, J.: The view from the left. Journal of Functional Programming 14(1), 69–111 (2004)
Michelbrink, M., Setzer, A.: State dependent IO-monads in type theory. Electronic Notes in Theoretical Computer Science 122, 127–146 (2005)
Norell, U.: Towards a Practical Programming Language based on Dependent Type Theory. PhD thesis, Chalmers University of Technology (2007)
Petersson, K., Synek, D.: A set constructor for inductive sets in martin-löf’s type theory. In: Dybjer, P., Pitts, A.M., Pitt, D.H., Poigné, A., Rydeheard, D.E. (eds.) Category Theory and Computer Science. LNCS, vol. 389, pp. 128–140. Springer, Heidelberg (1989)
Jones, S.P. (ed.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2003)
Setzer, A.: Guarded recursion in dependent type theory. In: Talk at Agda Implementors Meeting, Göteborg, Sweden, May 2007, vol. 6 (2007)
Setzer, A.: Coalgebras in dependent type theory. In: Talk at Agda Intensive Meeting, Sendai, Japan, November 2008, vol. 9 (2008)
Telford, A., Turner, D.: Ensuring streams flow. In: Johnson, M. (ed.) AMAST 1997. LNCS, vol. 1349, pp. 509–523. Springer, Heidelberg (1997)
Turner, D.A.: Elementary strong functional programming. In: Hartel, P.H., Plasmeijer, R. (eds.) FPLE 1995. LNCS, vol. 1022, pp. 1–13. Springer, Heidelberg (1995)
Turner, D.A.: Total functional programming. J. UCS 10(7), 751–768 (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
McBride, C. (2009). Let’s See How Things Unfold: Reconciling the Infinite with the Intensional (Extended Abstract). In: Kurz, A., Lenisa, M., Tarlecki, A. (eds) Algebra and Coalgebra in Computer Science. CALCO 2009. Lecture Notes in Computer Science, vol 5728. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-03741-2_9
Download citation
DOI: https://doi.org/10.1007/978-3-642-03741-2_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-03740-5
Online ISBN: 978-3-642-03741-2
eBook Packages: Computer ScienceComputer Science (R0)