A Functional Programming environment supporting execution, partial execution and transformation

  • John Darlington
  • Peter Harrison
  • Hessam Khoshnevisan
  • Lee McLoughlin
  • Nigel Perry
  • Helen Pull
  • Mike Reeve
  • Keith Sephton
  • Lyndon While
  • Sue Wright
Submitted Presentations
Part of the Lecture Notes in Computer Science book series (LNCS, volume 365)


The Functional Programming Section in the Department of Computing at Imperial College has been conducting research aimed at making practical the theoretical benefits inherent in pure functional programming, i.e. more expressive programming languages, software development based on formal program derivation and parallel execution. This work has led to, amongst other things, language design and implementation, the development of some of the earliest program transformation systems and the construction of ALICE, a parallel graph reduction machine.

Recently some of this work has been carried forward within the Flagship project. Flagship is a collaborative project, funded under the United Kingdom's Alvey Programme and running from 1986 until early 1989. The partners involved are ICL (International Computers Limited), Imperial College and Manchester University. Flagship's overall goal is to develop an integrated application development and execution technology based on declarative programming languages (both functional and logic).

Imperial College's contribution involves language design and implementation and the construction of a program development technology and associated tools based on the idea of correctness-preserving program transformations. This has led to the development of a range of transformation technologies for functional programming languages and the implementation of a programming environment that supports these technologies. Details of the transformation technologies themselves have been published elsewhere and so they are only summarised here. In this paper we will concentrate on the integration of these technologies into the programming environment.

First we describe our functional language, Hope+, and introduce an extension to the language that allows the use of logical variables. We then briefly describe each of the transformation technologies that have been developed. Next we show how these are integrated into an environment that supports transformational programming. We give some examples of transformational developments conducted in the environment and show the preliminary results of experiments conducted in developing program forms suitable for efficient execution on ALICE and the Flagship parallel machine. We conclude with a review of the current state of our activities, a discussion of the implications of our work and an outline of our plans for the future.


Functional programming environment program transformation partial evaluation parallel execution 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Bac78]
    Backus, J.W., Can Programming Be Liberated from the von Neumann Style? A Functional Style and its Algebra of Programs, CACM, 21(8), August 1978, pp. 613–641.Google Scholar
  2. [Bac81]
    Backus, J.W., The Algebra of Functional Programs, Function Level Reasoning, Linear Equations and Extended Definitions, Springer-Verlag, Volume 107, 1981, pp. 1–43.Google Scholar
  3. [BMS80]
    Burstall, R. M., MacQueen, D. B. and Sannella, D. T., HOPE: An Experimental Applicative Language, Internal Report CSR-62-80, University of Edinburgh, U.K., 1980.Google Scholar
  4. [Bro87]
    Broughton, P., Thomson, C. M., Leunig, S. R. and Prior, S., Designing System Software for Parallel Declarative Systems, ICL Technical Journal 5(3), May 1987, pp. 541–554.Google Scholar
  5. [BuD77]
    Burstall, R. M. and Darlington, J., A Transformation System for Developing Recursive Programs, J. ACM, 24(1), January 1977, pp. 44–67.CrossRefGoogle Scholar
  6. [CDF87]
    Cripps, M. D., Darlington, J., Field, A. J., Harrison, P. G. and Reeve, M. J., The Design and Implementation of ALICE: A Parallel Graph Reduction Machine, Selected Reprints on Dataflow and Reduction Architectures, ed. S. S. Thakkar, IEEE Computer Society Press, 1987.Google Scholar
  7. [CFL88]
    Coscia, P., Franceschi, P., Levi, G., Sardu, G. and Torre, L., Meta-Level Definition and Compilation of Inference Engines in the Epsilon Logic Programming Environment, Proceedings of the Fifth International Conference and Symposium on Logic Programming, Volume 1, Kowalski, K. A. (eds), The MIT Press, London, 1988.Google Scholar
  8. [Coh83]
    Cohen, N. H., Eliminating Redundant Recursive Calls, ACM Transactions on Programming Languages and Systems, 5(3), July 1983, pp. 265–299.CrossRefGoogle Scholar
  9. [DaG88]
    Darlington, J. and Guo, Y. E., Narrowing and Unification in Functional Programming, Internal Report, Functional Programming Section, Department of Computing, Imperial College, London, October, 1988.Google Scholar
  10. [DaR81]
    Darlington, J. and Reeve, M. J., ALICE: A Multiprocessor Reduction Machine for the Parallel Evaluation of Applicative Languages, ACM/MIT Conference on Functional Programming Languages and Computer Architecture, 1981.Google Scholar
  11. [DaW87]
    Darlington, J. and While, R. L., Controlling the Behaviour of Functional Language Systems, Proceedings of the International Conference on Functional Programming and Computer Architecture, Portland., Oregon, 1987.Google Scholar
  12. [DFP86]
    Darlington, J., Field A. J., and Pull, H.M., The Unification of Functional and Logic Languages, Logic Programming: Functions, Relations and Equations, Degroot, D. and Lindstrom, G. (eds), Prentice-Hall, 1986.Google Scholar
  13. [DP87]
    Darlington, J. and Pull, H.M., A Program Development Methodology Based on a Unified Approach to Execution, Partial Evaluation and Mixed Computation, Proceedings of the IFIP Workshop on Partial Evaluation and Mixed Computation, October 1987, eds. Bjorner, D., Ershov, A. P. and Jones, N. D., North Holland.Google Scholar
  14. [DGN86]
    Della Fera, T., Gettys, J. and Newman, R., Xlib-C Language X Interface Protocol Version 10, Digital Equipment Corporation, MIT/Project Athena, January 1986.Google Scholar
  15. [FHW87]
    Field, A. J., Hunt L. S. and While, R. L., Best-fit Pattern-matching, Internal Report, Functional Programming Section, Department of Computing, Imperial College, London, December 1987.Google Scholar
  16. [GKS87]
    Glauert, J. R. W., Kennaway, J. R., Sleep, M. R., Holt, N. P., Reeve, M. J., and Watson, I., Specification of Core DACTL1, Internal Report SYS-C87-09, University of East Anglia, U.K., 1987.Google Scholar
  17. [Gre84]
    Greenblatt, R. D., The LISP Machine, in Interactive Programming Environments, Barstow, D. R., Shrobe, H. E. and Sandewall, E. (eds), McGraw-Hill, 1984.Google Scholar
  18. [Guo88]
    Guo, Y. E., An Execution Mechanism for a Functional Language with Unfiication, BCS FACS Workshop on Term Rewriting, Bristol, September, 1988.Google Scholar
  19. [HaK86]
    Harrison, P. G. and Khoshnevisan, H., Efficient Compilation of Linear Recursive Functions into Object-level Loops, Proceedings 1986 SIGPLAN Symposium on Compiler Construction, Palo Alto, June 1986.Google Scholar
  20. [HaK88]
    Harrison, P. G. and Khoshnevisan, H., On the Synthesis of Function Inverses, Internal Report, Functional Programming Section, Department of Computing, Imperial College, London, April 1988.Google Scholar
  21. [HaK89]
    Harrison, P. G. and Khoshnevisan, H., The Mechanical Transformation of Data Types, Comp. J., 1989, to appear.Google Scholar
  22. [HP86]
    Hewlett-Packard, Programming with the X-window System, Internal report, November 1986.Google Scholar
  23. [GMW77]
    Gordon, M., Milner, R. and Wadsworth, C., Edinburgh LCF, Report CSR-11-77, Computer Science Department, Edinburgh University, 1977.Google Scholar
  24. [KeS81]
    Keller, R. M. and Sleep, M. R., Applicative Caching: Programmer Control of Object Sharing and Lifetime in Distributed Implementations of Applicative Languages, ACM Conference on functional languages and computer architecture, Portsmouth, 1981, pp. 131–140.Google Scholar
  25. [Kho87]
    Khoshnevisan, H., Automatic Transformation Systems Based on Functional-Level Reasoning, PhD thesis, Functional Programming Section, Department of Computing, Imperial College, London, 1987.Google Scholar
  26. [KhS89]
    Khoshnevisan, H. and Sephton, K. M., InvX: An Automatic Function Inverter, Conference on Rewriting Techniques and Applications, Chapel Hill, North Carolina, April 1989.Google Scholar
  27. [MaP81]
    Manna, Z. and Pnueli, A., Verification of Concurrent Programs: the Temporal Framework, Computer Science Department, Stanford University, U.S.A, 1981.Google Scholar
  28. [Mic68]
    Michie, D. "Memo" Functions and Machine Learning, Nature, No. 218, 1968, pp. 19–22.Google Scholar
  29. [Per87]
    Perry, N., Hope+C A Continuation Extension for Hope+, IC/FPR/LANG/2.5.1/21, Internal Report, Functional Programming Section, Department of Computing, Imperial College, London, 1987.Google Scholar
  30. [Per88]
    Perry, N., Functional Language I/O, IC/FPR/LANG/2.5.1/29, Internal Report, Functional Programming Section, Department of Computing, Imperial College, London, 1987.Google Scholar
  31. [PeS87]
    Perry, N. and Sephton, K. M., Hope+ Compiler, IC/FPR/LANG/2.5.1/14, Internal Report, Functional Programming Section, Department of Computing, Imperial College, London, 1987.Google Scholar
  32. [StW74]
    Strachey, C. and Wadsworth, C. P., Continuations-A Mathematical Semantics for Handling Full Jumps, PRG-11, Programming Research Group, University of Oxford, 1974.Google Scholar
  33. [Tow87]
    Townsend, P., Flagship Hardware and Implementation, ICL Technical Journal 5(3), May 1987, pp. 575–594.Google Scholar
  34. [WaW86]
    Watson, I. and Watson, P., Graph Reduction in a Parallel Virtual Memory Environment, Proceedings of the MCC Graph Reduction Workshop, Santa Fe, New Mexico, Springer-Verlag, 1986.Google Scholar
  35. [Whi88]
    While, R. L., Behavioural Aspects of Term Rewriting Systems, PhD thesis, Functional Programming Section, Department of Computing, Imperial College, London, 1988.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1989

Authors and Affiliations

  • John Darlington
    • 1
  • Peter Harrison
    • 1
  • Hessam Khoshnevisan
    • 1
  • Lee McLoughlin
    • 1
  • Nigel Perry
    • 1
  • Helen Pull
    • 1
  • Mike Reeve
    • 1
  • Keith Sephton
    • 1
  • Lyndon While
    • 1
  • Sue Wright
    • 1
  1. 1.Department of ComputingImperial CollegeLondon

Personalised recommendations