A Functional Programming environment supporting execution, partial execution and transformation
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.
KeywordsFunctional programming environment program transformation partial evaluation parallel execution
Unable to display preview. Download preview PDF.
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [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
- [Guo88]Guo, Y. E., An Execution Mechanism for a Functional Language with Unfiication, BCS FACS Workshop on Term Rewriting, Bristol, September, 1988.Google Scholar
- [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
- [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
- [HaK89]Harrison, P. G. and Khoshnevisan, H., The Mechanical Transformation of Data Types, Comp. J., 1989, to appear.Google Scholar
- [HP86]Hewlett-Packard, Programming with the X-window System, Internal report, November 1986.Google Scholar
- [GMW77]Gordon, M., Milner, R. and Wadsworth, C., Edinburgh LCF, Report CSR-11-77, Computer Science Department, Edinburgh University, 1977.Google Scholar
- [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
- [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
- [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
- [MaP81]Manna, Z. and Pnueli, A., Verification of Concurrent Programs: the Temporal Framework, Computer Science Department, Stanford University, U.S.A, 1981.Google Scholar
- [Mic68]Michie, D. "Memo" Functions and Machine Learning, Nature, No. 218, 1968, pp. 19–22.Google Scholar
- [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
- [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
- [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
- [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
- [Tow87]Townsend, P., Flagship Hardware and Implementation, ICL Technical Journal 5(3), May 1987, pp. 575–594.Google Scholar
- [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
- [Whi88]While, R. L., Behavioural Aspects of Term Rewriting Systems, PhD thesis, Functional Programming Section, Department of Computing, Imperial College, London, 1988.Google Scholar