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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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.
Backus, J.W., The Algebra of Functional Programs, Function Level Reasoning, Linear Equations and Extended Definitions, Springer-Verlag, Volume 107, 1981, pp. 1–43.
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.
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.
Burstall, R. M. and Darlington, J., A Transformation System for Develo** Recursive Programs, J. ACM, 24(1), January 1977, pp. 44–67.
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.
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.
Cohen, N. H., Eliminating Redundant Recursive Calls, ACM Transactions on Programming Languages and Systems, 5(3), July 1983, pp. 265–299.
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.
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.
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.
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.
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.
Della Fera, T., Gettys, J. and Newman, R., Xlib-C Language X Interface Protocol Version 10, Digital Equipment Corporation, MIT/Project Athena, January 1986.
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.
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.
Greenblatt, R. D., The LISP Machine, in Interactive Programming Environments, Barstow, D. R., Shrobe, H. E. and Sandewall, E. (eds), McGraw-Hill, 1984.
Guo, Y. E., An Execution Mechanism for a Functional Language with Unfiication, BCS FACS Workshop on Term Rewriting, Bristol, September, 1988.
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.
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.
Harrison, P. G. and Khoshnevisan, H., The Mechanical Transformation of Data Types, Comp. J., 1989, to appear.
Hewlett-Packard, Programming with the X-window System, Internal report, November 1986.
Gordon, M., Milner, R. and Wadsworth, C., Edinburgh LCF, Report CSR-11-77, Computer Science Department, Edinburgh University, 1977.
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.
Khoshnevisan, H., Automatic Transformation Systems Based on Functional-Level Reasoning, PhD thesis, Functional Programming Section, Department of Computing, Imperial College, London, 1987.
Khoshnevisan, H. and Sephton, K. M., InvX: An Automatic Function Inverter, Conference on Rewriting Techniques and Applications, Chapel Hill, North Carolina, April 1989.
Manna, Z. and Pnueli, A., Verification of Concurrent Programs: the Temporal Framework, Computer Science Department, Stanford University, U.S.A, 1981.
Michie, D. "Memo" Functions and Machine Learning, Nature, No. 218, 1968, pp. 19–22.
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.
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.
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.
Strachey, C. and Wadsworth, C. P., Continuations-A Mathematical Semantics for Handling Full Jumps, PRG-11, Programming Research Group, University of Oxford, 1974.
Townsend, P., Flagship Hardware and Implementation, ICL Technical Journal 5(3), May 1987, pp. 575–594.
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.
While, R. L., Behavioural Aspects of Term Rewriting Systems, PhD thesis, Functional Programming Section, Department of Computing, Imperial College, London, 1988.
Author information
Authors and Affiliations
Editor information
Rights 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