Skip to main content

Recursion Equations as a Programming Language

  • Chapter
  • First Online:
A List of Successes That Can Change the World

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 9600))

Abstract

This paper was written in 1981 and published in Darlington Henderson and Turner (1982) pp 1–28. The volume comprised the lecture notes from a summer school on Functional Programming held at Newcastle University in July 1981, attended by 80 people. The paper includes an overview of Kent Recursive Calculator, a simple functional programming system based on higher order recursion equations and a series of programming examples. It is probably the earliest paper using list comprehensions applied to lazy lists and has the first published account of the “list of successes” method of eliminating backtracking, here applied to the eight queens problem. The method didn’t yet have a name. It was Phil Wadler who saw its importance and coined the phrase “list of successes” in his 1985 paper. It was also Phil who invented the term “list comprehensions” for what are here called “ZF expressions”.

This paper is included with the kind permission of Cambridge University Press.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    KRC indexed lists starting from 1 rather than from 0.

  2. 2.

    This function would now be called foldr; foldr and foldl with their now familiar definitions first appeared in the 1983 release of SASL.

  3. 3.

    ZF expressions are now called “list comprehensions”, a term coined by Phil Wadler in 1985. The ZF expressions of 1981 KRC differ from modern list comprehensions in one significant respect — outputs of multiple generators are interleaved to ensure that all combinations are reached, even with two or more infinite generators.

References

  • Ackermann, W.B., Dennis, J.B.: VAL - preliminary reference manual. MIT Laboratory for Computer Science, June 1979

    Google Scholar 

  • Arvind, Gostelow, K.P., Plouffe, W.: An asynchronous programming language and computing machine. University of California at Irvine, December 1978

    Google Scholar 

  • Backus, J.: Can Programming be liberated from the Von Neumann style: a functional style and its algebra of programs. CACM 21(8), 613–641 (1978)

    Article  MathSciNet  MATH  Google Scholar 

  • Clarke, J.W., Gladstone, P.J.S., Maclean, C.D., Norman, A.C.: SKIM - S, K, I reduction machine. In: Proceedings LISP Conference, Stanford (1980)

    Google Scholar 

  • Darlington, J., Henderson, P., Turner, D.A. (eds.): Functional Programming and Its Applications. Cambridge University Press, Cambridge (1982)

    MATH  Google Scholar 

  • Dennis, J.B.: The varieties of data flow computers. MIT Computation Structures Group, Memo 183, August 1979

    Google Scholar 

  • Floyd, R.W.: Assigning meanings to programs. Proc. Am. Math. Soc. Symp. Appl. Math. 19, 19–31 (1967)

    Article  MathSciNet  MATH  Google Scholar 

  • Henderson, P., Morris, J.M.: A lazy evaluator. In: Proceedings 3rd POPL Symposium, Atlanta, Georgia (1976)

    Google Scholar 

  • Hoare, C.A.R.: An axiomatic basis for computer programming. CACM 12(10), 567–583 (1969)

    Article  MATH  Google Scholar 

  • Holloway, J., Steele, G., Sussman, G.J., Bell, A.: The scheme 79 Chip. In: Proceedings LISP Conference, Stanford (1980)

    Google Scholar 

  • Kuo, S.S., Linck, M.H., Saadat, S.: A guide to CSP. Oxford University Programming Research Group, Technical Monograph PRG-14, August 1978

    Google Scholar 

  • McCarthy, J., et al.: LISP 1.5 Programmers Manual. MIT Press, Cambridge (1962)

    Google Scholar 

  • Quine, W.V.O.: Word and Object. MIT Press, Cambridge (1960)

    MATH  Google Scholar 

  • Russell, B., Whitehead, A.N.: Principia Mathematica. Cambridge University Press, Cambridge (1925)

    Google Scholar 

  • Treleaven, P.C.: Exploiting program concurrency in computing systems. IEEE Computer, pp. 42–50, January 1979

    Google Scholar 

  • Turner, D.A.: SASL Language Manual. St Andrews University Department of Computational Science Technical report (1976)

    Google Scholar 

  • Turner, D.A.: Aspects of the Implementation of Programming Languages. Oxford University D. Phil. thesis (1981)

    Google Scholar 

  • Turner, D.A.: Recursion equations as a programming language. In: Darlington et al., pp. 1–28. Cambridge University Press, Cambridge (1982)

    Google Scholar 

Download references

Acknowledgements

This paper was first published in Darlington et al. (1982) and I am grateful to CUP for permission to include it in this collection dedicated to Phil Wadler.

The Appendix which follows includes most of the KRC prelude as it stood in 1981. Many of the definitions — hd, tl, filter, map, product, sum, take, drop, and so on, will be familiar to contemporary functional programmers but it may be of historical interest.

A working implementation of Kent Recursive Calculator, including both the 1981 prelude and a more modern prelude, can found at http://krc-lang.org — I am most grateful to Martin Guy for translating my code from an obsolete dialect of BCPL to C and getting it working.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to D. A. Turner .

Editor information

Editors and Affiliations

Appendix - The KRC Prelude of Standard Definitions

Appendix - The KRC Prelude of Standard Definitions

In the following note that entries of the form

figure aj

are comments and that infix.is functional composition.

figure ak
figure al
figure am
figure an
figure ao

Rights and permissions

Reprints and permissions

Copyright information

© 1982 Cambridge University Press

About this chapter

Cite this chapter

Turner, D.A. (1982). Recursion Equations as a Programming Language. In: Lindley, S., McBride, C., Trinder, P., Sannella, D. (eds) A List of Successes That Can Change the World. Lecture Notes in Computer Science(), vol 9600. Springer, Cham. https://doi.org/10.1007/978-3-319-30936-1_24

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-30936-1_24

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-30935-4

  • Online ISBN: 978-3-319-30936-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics