Another implementation technique for applicative languages

  • Hugh Glaser
  • Sean Hayes
Functional Programming Language Implementation
Part of the Lecture Notes in Computer Science book series (LNCS, volume 213)


Data flow has sometimes been proposed as an evaluation mechanism for applicative languages, its focus on data dependency and the pure functional nature of certain models can make it an attractive choice. Few machines have been built however, and those that have fall short of being ideal general-purpose applicative language computers. This paper will present a particularly simple data flow model which is similar to supercombinator reduction, supporting higher order functions, garbage collection and a form of lazy evaluation in a clear and natural manner.

The paper will also show how the model can be made to execute on a conventional processor. Such a method has shown significant speed increases over other available methods of evaluating functional programs, and the hardware implementation holds the promise of a machine that executes applicative languages at a comparable speed to conventional hardware executing control flow programs. In addition, unlike other proposed models, the extensions to a multi-processor machine are natural and well defined, with the potential of even greater speedups.


Data Flow Garbage Collection Abstract Machine Functional Language Machine Code 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

6 References

  1. Burstall, R.M., MacQueen, D.B. and Sanella, D.T., HOPE: An Experimental Applicative Language, Proc. 1980 Lisp Conference, Stanford 1980.Google Scholar
  2. Curry, H.B. and Feys, R., Combinatory Logic, Volume 1, North-Holland 1968.Google Scholar
  3. French, E.F. and Glaser, H.W., TUKI. A Data Flow Processor, Computer Architecture News 11, 1, 12–18 (March 1983).Google Scholar
  4. Glaser, H.W. and Thompson, P., Lazy Garbage Collection, Westfield College, Internal Report.Google Scholar
  5. Hankin, C.L., A Data Flow Model of Parallel Processing, Department of Computer Science, Westfield College, University of London, Aug. 1979, Ph.D. Thesis.Google Scholar
  6. Hankin, C.L. and Glaser H.W., The Data Flow Programming Language CAJOLE — An Informal Introduction, ACM SIGPLAN Notices 16, 7, 35–44 (July 1981).Google Scholar
  7. Hughes, J., Graph Reduction with Supercombinators, PRG-28, Programming Research Group, Oxford University, 1982.Google Scholar
  8. Johnsson, T. The G-Machine: An Abstract Machine for Graph Reduction, Proceedings of the Declarative Programming Workshop, University College London, April 1983.Google Scholar
  9. Kahn, G., The Semantics of a Simple Language for Parallel Programming, Information Processing 1974 (IFIP 74), North-Holland, 1974.Google Scholar
  10. Mycroft, A., Polymorphic Type Schemes and Recursive Definitions, Proc. 6th. International Conference on Programming, Toulouse (Springer-Verlag LNCS 167) April 1984.Google Scholar
  11. Treleaven, P.C., Brownbridge, D.R. and Hopkins, R.P. Data-Driven and Demand-Driven Computer Architecture, Computing Surveys 14, 1, (March 1982).Google Scholar
  12. Turner, D.A., A New Implementation Technique for Applicative Languages, Software — Practice and Experience 9, 1, 31–49 (Jan. 1979).Google Scholar
  13. Turner, D.A., Miranda: A Non-Strict Functional Language with Polymorphic Types, Proc. Conference on Functional Programming and Computer Architectures (Springer-Verlag LNCS 201) 1984.Google Scholar
  14. Vegdahl, S.R., A Survey of Proposed Architectures for the Execution of Functional Languages, IEEE Transactions on Computers, C-33, 12 (Dec. 1984).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1986

Authors and Affiliations

  • Hugh Glaser
    • 1
  • Sean Hayes
    • 1
  1. 1.Department of ComputingImperial CollegeLondonUK

Personalised recommendations