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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
KRC indexed lists starting from 1 rather than from 0.
- 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.
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
Arvind, Gostelow, K.P., Plouffe, W.: An asynchronous programming language and computing machine. University of California at Irvine, December 1978
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)
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)
Darlington, J., Henderson, P., Turner, D.A. (eds.): Functional Programming and Its Applications. Cambridge University Press, Cambridge (1982)
Dennis, J.B.: The varieties of data flow computers. MIT Computation Structures Group, Memo 183, August 1979
Floyd, R.W.: Assigning meanings to programs. Proc. Am. Math. Soc. Symp. Appl. Math. 19, 19–31 (1967)
Henderson, P., Morris, J.M.: A lazy evaluator. In: Proceedings 3rd POPL Symposium, Atlanta, Georgia (1976)
Hoare, C.A.R.: An axiomatic basis for computer programming. CACM 12(10), 567–583 (1969)
Holloway, J., Steele, G., Sussman, G.J., Bell, A.: The scheme 79 Chip. In: Proceedings LISP Conference, Stanford (1980)
Kuo, S.S., Linck, M.H., Saadat, S.: A guide to CSP. Oxford University Programming Research Group, Technical Monograph PRG-14, August 1978
McCarthy, J., et al.: LISP 1.5 Programmers Manual. MIT Press, Cambridge (1962)
Quine, W.V.O.: Word and Object. MIT Press, Cambridge (1960)
Russell, B., Whitehead, A.N.: Principia Mathematica. Cambridge University Press, Cambridge (1925)
Treleaven, P.C.: Exploiting program concurrency in computing systems. IEEE Computer, pp. 42–50, January 1979
Turner, D.A.: SASL Language Manual. St Andrews University Department of Computational Science Technical report (1976)
Turner, D.A.: Aspects of the Implementation of Programming Languages. Oxford University D. Phil. thesis (1981)
Turner, D.A.: Recursion equations as a programming language. In: Darlington et al., pp. 1–28. Cambridge University Press, Cambridge (1982)
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
Corresponding author
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
are comments and that infix “.” is functional composition.
Rights 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)