A Functional Programming environment supporting execution, partial execution and transformation

  • Submitted Presentations
  • Conference paper
  • First Online:
PARLE '89 Parallel Architectures and Languages Europe (PARLE 1989)

Abstract

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 develo** 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.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. 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. 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. 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. 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. Burstall, R. M. and Darlington, J., A Transformation System for Develo** Recursive Programs, J. ACM, 24(1), January 1977, pp. 44–67.

    Article  Google Scholar 

  6. 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. 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. Cohen, N. H., Eliminating Redundant Recursive Calls, ACM Transactions on Programming Languages and Systems, 5(3), July 1983, pp. 265–299.

    Article  Google Scholar 

  9. 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. 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. 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. 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. 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. 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. 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. 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. 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. Guo, Y. E., An Execution Mechanism for a Functional Language with Unfiication, BCS FACS Workshop on Term Rewriting, Bristol, September, 1988.

    Google Scholar 

  19. 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. 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. Harrison, P. G. and Khoshnevisan, H., The Mechanical Transformation of Data Types, Comp. J., 1989, to appear.

    Google Scholar 

  22. Hewlett-Packard, Programming with the X-window System, Internal report, November 1986.

    Google Scholar 

  23. Gordon, M., Milner, R. and Wadsworth, C., Edinburgh LCF, Report CSR-11-77, Computer Science Department, Edinburgh University, 1977.

    Google Scholar 

  24. 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. 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. 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. Manna, Z. and Pnueli, A., Verification of Concurrent Programs: the Temporal Framework, Computer Science Department, Stanford University, U.S.A, 1981.

    Google Scholar 

  28. Michie, D. "Memo" Functions and Machine Learning, Nature, No. 218, 1968, pp. 19–22.

    Google Scholar 

  29. 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. 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. 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. 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. Townsend, P., Flagship Hardware and Implementation, ICL Technical Journal 5(3), May 1987, pp. 575–594.

    Google Scholar 

  34. 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. While, R. L., Behavioural Aspects of Term Rewriting Systems, PhD thesis, Functional Programming Section, Department of Computing, Imperial College, London, 1988.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Eddy Odijk Martin Rem Jean-Claude Syre

Rights and permissions

Reprints and permissions

Copyright information

© 1989 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Darlington, J. et al. (1989). A Functional Programming environment supporting execution, partial execution and transformation. In: Odijk, E., Rem, M., Syre, JC. (eds) PARLE '89 Parallel Architectures and Languages Europe. PARLE 1989. Lecture Notes in Computer Science, vol 365. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3540512845_46

Download citation

  • DOI: https://doi.org/10.1007/3540512845_46

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-51284-4

  • Online ISBN: 978-3-540-46183-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics

Navigation