Elementary strong functional programming
Functional programming is a good idea, but we haven't got it quite right yet. What we have been doing up to now is weak (or partial) functional programming. What we should be doing is strong (or total) functional programming — in which all computations terminate. We propose an elementary discipline of strong functional programming. A key feature of the discipline is that we introduce a type distinction between data, which is known to be finite, and codata, which is (potentially) infinite.
Unable to display preview. Download preview PDF.
- 1.R. S. Bird, P. Wadler “Introduction to Functional Programming”, Prentice Hall, 1988.Google Scholar
- 2.K. Gödel “On a hitherto unutilized extension of the finitary standpoint”, Dialectica 12, pp 280–287 (1958).Google Scholar
- 3.R. Harper, D. MacQueen, R. Milner “Standard ML”, University of Edinburgh LFCS Report 86-2, 1986.Google Scholar
- 4.Paul Hudak et al. “Report on the Programming Language Haskell”, SIGPLAN Notices, vol 27, no 5 (May 1992).Google Scholar
- 5.A. M. Pitt “A Co-induction Principle for Recursively Defined Domains”, Theoretical Computer Science, vol 124, 1994.Google Scholar
- 6.Colin Runciman “What about the Natural Numbers”, Computer Languages vol 14, no 3, pp 181–191, 1989.Google Scholar
- 7.S. J. Thompson “A Logic for Miranda”, Formal Aspects of Computing, vol 1, no 4, pp 339–365, 1989.Google Scholar
- 8.D. A. Turner “Functional Programming and Proofs of Program Correctness” in Tools and Notions for Program Construction, pp 187–209, Cambridge University Press, 1982 (ed. Néel).Google Scholar
- 9.D. A. Turner “Miranda: A non-strict functional language with polymorphic types” Proceedings IFIP International Conference on Functional Programming Languages and Computer Architecture, Nancy, France, September 1985 (LNCS, vol 201).Google Scholar