Abstract
Functional languages belong to a neat and very high-level programming paradigm. A functional program is a set of function definitions. The λ-Calculus, a theory of functions under recursion, offers a solid theoretic background to functional programming. In 1978, John Backus pointed at the functional programming as a natural candidate to solve “the software crisis”.
One of the many promises of functional programming was the possibility of extracting parallelism. This paper analyses the evolution of the functional programming paradigm under this outlook.
This is a preview of subscription content, log in via an institution.
Preview
Unable to display preview. Download preview PDF.
References
K.A.M.Ali. Object-Oriented Storage Management and Garbage Collection in Distributed Processing Systems. PhD thesis, Royal Institute of Technology, Stockholm, December 1984.
P. Anderson, C. L. Hankin, P. R. J. Kelly, P. E. Osmon, and M. J. Shute. COBWEB-2: Structured Specification of a Wafer Scale Supercomputer. In PARLE '87, pages 51–27. Springer-Verlag LNCS 258, 1987.
A.W. Appel, J.R. Ellis, and K.Li. Real-time concurrent collection on stock multiprocessors. ACM SIGPLAN Notices, 23(7):11–20, 1988.
Arvind, V. Kathail, and K. K. Pingali. A Dataflow Architecture with Tagged Tokens. Technical Report LCS Memo TM-174, MIT, 1980.
Arvind and R. S. Nikhil. Can Dataflow Subsume von Neumann Computing? Technical Report CSG Memo 292, MIT, November 1988.
J.Backus. Can Programming be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. Comm. ACM 21 (8):613–641, August 1978.
H.P. Barendregt The Lambda Calculus its Syntax and Semantics Studies in Logic and the Foundation of Mathematics North-Holland (1984-2nd. ed.)
M. Ben-Ari. On-the-fly garbage collection: new algorithms inspired by program proofs. In M. Nielsen and E. M. Schmidt, editors, Automata, languages and programming. Ninth colloquium (Aarhus, Denmark), pages 14–22, New Yokr, July 12–16 1982. Springer-Verlag.
M.Ben-Ari. Algorithms for on-the-fly garbage collection. ACM Transactions on Programming Languages and Systems, 6(3):333–344, July 1984.
A. D. Ben-Dyke. The History of Parallel Functional Programming. FTPable from ftp.cs.bham.ac.uk, August 1994.
K. J. Berkling. Reduction Languages for Reduction Machines. In 2nd. Annual ACM Symp. on Comp. Arch., pages 133–140. ACM/IEEE 75CH0916-7C, 1975.
D. I. Bevan. Distributed Garbage Collection using Reference Counting. In PARLE '87, pages 176–187. Springer Verlag LNCS 259, 1987.
G. E. Blelloch. NESL: A Nested Data-Parallel Language (Version 2.6). Technical Report CMUCS-93-129, School of Computer Science, Carnegie Mellon University, April 1993.
G. E. Blelloch, S. Chatterjee, J. C. Hardwick, J.Sipelstein, and M. Zagha. Implementation of a Portable Nested Data-Parallel Language. In Principles and Practices of Parallel Programming, pages 102–111, 1993.
T. A. Bratvold. A Skeleton-Based Parallelising Compiler for ML. In (lO4), pages 23–34.
W. H. Burge. Recursive Programming Techniques. Addison-Wesley, 1975.
G. L. Burn. Lazy Functional Languages. Abstract Interpretation and Compilation. Research Monographs in Parallel and Distributed Computing. Pitman, 1991.
G. L. Burn. Evaluation Transformers — A Model for the Parallel Evaluation of Functional Languages (Extended Abstract). In FPCA '87, pages 446–470. Springer-Verlag LNCS 274, 1987.
G.L.Burns, S.L.Peyton Jones and J.D.Robson. The spineless g-machine. In Proc. ACM Conference on Lisp and Functional Programming, pages 244–258, Snowbird, USA, 1988.
R. M. Burstall, D. B. MacQueen, and D. T, Sannella. Hope. Technical Report CSR-62-80, Edinburgh University, 1980.
F. W. Burton and M. R. Sleep. Executing functional programs on a virtual tree of processors. In FPCA '81, pages 187–194, 1981.
Warren Burton. Annotations to Control Parallelism and Reduction Order in the Distributed Evaluation of Functional Programs, ACM TOPLAS, 6(2),1984.20
L.Cardelli. The functional abstract machine. Polymorphism, 1, 1983.
A.Church, A set of postulates for the foundation of logic, Annals of Math. (2)33, pp.346–366.
M. I. Cole. Algorithmic Skeletons: Structured Management of Parallel Computation. Research Monographs in Parallel and Distributed Computing. Pitman, 1989.
G.E. Collins. A method for overlapping and erasure of lists. Communications of the ACM, 3(12):655–657, Dec. 1960.
G.Cousineau P-L.Curien and M.Mauny. The categorical abstract machine. In J-P.Jouannaud, editor, Functional Programming Languages and Computer Architecture. SLNCS 201, 1985.
S. Cox, H. Glaser, and M. J. Reeve. Implementing Functional Languages ou the Transputer. In [34], pages 287–295, 1989
S. Cox, S.-Y. Huang, P. H. J. Kelly, J. Liu, and F. Taylor. Program Transformation for Static Process Network. In PARLE '92, pages 497–512. Springer-Verlag LNCS 605, 1992.
D. Culler and Arvind. Resource Requirements of Dataflow Programs. In 15th. Annual ACM Symp. on Comp. Arch., 1988.
P-L.Curien. Categorical Combinators, Sequential Algorithms and Functional Programming. Research Notes in Theoretical Computer Science. Pitman Publishing Ltd., 1986.
J. Darlington, A. J. Field, P. G. Harrison, P. H. J. Kelly, D. W. N. Sharp, Q. Wu, and R. L. While. Parallel Programming using Skeleton Functions. In PARLE '93, pages 146–160. Springer-Verlag LNCS 694, 1993.
J. Darlington and M. J. Reeve. ALICE: A Multiple-Processor Reduction Machine for the Parallel Evaluation of Applicative Languages. In FPCA '81, pages 65–76, 1981.
M. K. Davis and R, J. M. Hughes, editors. Glasgow Workshop on Functional Programming. Springer-Verlag WICS, 1989.
K. Didrich, A. Fett, C. Gerke, W. Grieskamp, and P. Pepper. OPAL: Design and Implementation of an Algebraic Programming Language, In J. Gutknecht, editor, Programming Languages and System Architectures, Zurich, Switzerland, pages 228–244. Springer-Verlag LNCS 782, March 1994.
E.W. Dijkstra. Notes on a real time garbage collection system. From a conversation with D.E.Knuth (private collection of D.E.Knuth), 1975.
E.W. Dijkstra, L.Lamport, A.J. Martin, C.S. Scholten, and E.F.M.Steffens. On-the-fly garbage collection: An exercise in cooperation. In Lecture Notes in Computer Science, No. 46. Springer-Verlag, New York, 1976.
E.W. Dijkstra, L.Lamport, A.J. Martin, C.S. Scholten, and E.F.M.Steffens. On-the-fly garbage collection: An exercise in cooperation. Communications of the ACM, 21(11):965–975, November 1978.
J. Darlington et al. An Introduction to the FLAGSHIP Programing Environment. In CONPAR '88, Manchester. Cambridge University Press, 1988.
J.Fairbairn and S.Wray. TIM: A simple, lazy abstract machine to execute supercombinators. In Proceedings of Third International Conference on Fuctinal Programming and Computer Architecture, pages 34–45. LNCS 274, Springer Verlag, 1987.
P. Hartel et al. Pseudoknot: a Float-Intensive Benchmark for Functional Compilers. to appear in J. of Functional Programming, 1996.
D.Gries. An exercise in proving parallel programs correct. Communications of the ACM, 20(12):921–930, Dec. 1977.
B. Goldberg and P. Hudak. Alfalfa: Distributed Graph Reduction on a Hypercube Multiprocessor. In Workshop on Graph Reduction, Santa FE, New Mexico, pages 94–113. Springer-Verlag LNCS 279, September 1986.
B. F. Goldberg. Multiprocessor Execution of Functional Programs. Intl. Journal of Parallel Programming, 17(5):425–473,1988.
R. G. Goldsmith, D. L. McBurney, and M. R. Sleep. Parallel Execution of Concurrent Clean on ZAPP. In [104], chapter 21.
J. R. Gurd, C. C., Kirkham, and I. Watson. The Manchester Prototype Dataflow Computer. Comm. ACM, 28(1):34–52, January 1985.
J. R. Gurd, C.C. Kirkham, and J. R. W. Glauert. A Multilayered Data Flow Computer Architecture. Technical report, Manchester University, 1978.
K.Hammond. Parallel Functional Programming: An Introduction. FTPable from ftp.dcs.glasgow.ac.uk, August 1994.
K. Hammond and J. T. O'Donnell, editors. Glasgow Workshop on Functional Programming. Springer-Verlag WICS, 1993.
Chris L. Hankin, P. E. Osmon, and M. J. Shute. COBWEB — a combinator reduction architecture. In FPCA '85, pages 99–112, September 1985.
P. G. Harrison and M. J. Reeve. The Parallel Graph Reduction Machine, Alice. In Work-shop on Graph Reduction, Santa FE, New Mexico, pages 181–202. Springer-Verlag LNCS 279, September 1986.
J. M. D. Hill. The AIM is Laziness in a Data Parallel Language, In [49], pages 83–99.
P. Hudak. Para-Functional Programming in Haskell. In Boleslaw K. B. K. Szymanski, editor, Parallel Functional Languages and Compilers, Fontier Series, chapter 5, pages 159–196. ACM Press, 1991.
P. Hudak and B. Goldberg. Serial Combinators: ”Optimal” Grains of Parallelism. In FPCA '85, pages 382–399, September 1985.
P. Hudak and R. M. Keller. Garbage Collection and Task Deletion in Distributed Applicative Systems. In ACM Symp. on Lisp and Functional Programming, pages 168–178, 1982.
P. Hudak, S. L. Peyton Jones, and P. L. Wadler. Report on the Programming Language Haskell: a Non-Strict, Purely Functional Language. Special Issue of SIGPLAN Notices, 16(5), May 1992.
P. Hudak and L. Smith. Para-functional Programming: A Paradigm for Programming Multiprocessor Systems. In ACM POPL, pages 243–254, January 1986.
R. J. M. Hughes. A Distributed Garbage Collection Algorithm. In FPCA '85, pages 256–272, September 1985.
T.Johnsson. Compiling Lazy Functional Languages. PhD thesis, Chalmers Tekniska Högskola, Göteborg, Sweend, January 1987.
R.E.Jones and R.D.Lins. Garbage Collection: Algorithms for Automatic Dynamic Memory Management, John Wiley and Sons, 1996, ISBN 0 471 94148 4.
K.Kakuta, H.Nakamura, and S.Iida. Parallel reference counting algorithm. Information Processing Letters, 23(1):33–37, 1986.
R. M, Keller, F.C.H. Lin, and J. Tanaka, Rediflow multiprocessing. In IEEE Compcon, pages 410–417, February 1984.
P. Kelly. Functional Programming for Looselycoupled Multiprocessors. Research Monographs in Parallel and Distributed Computing. Pitman, 1989.
J. M. Kewley and K. Glynn. Evaluation Annotations for Hope+. In [34], pages 329–337.
D.E. Knuth. The art of computer programming, volume I: Fundamental algorithms, chapter 2. Addison-Wesley, Reading, Ma., 2nd edition, 1973.
H.T. Kung and S.W. Song. An efficient parallel garbage collection system and its correctness proof. In IEEE Symposium on Foundations of Computer Science, pages 120–131. IEEE, 1977.
J.Lambek. From lambda-calculus to cartesian closed categories. In J.P.Seldin and J.R.Hindley, editors, in To H.B.Curry: Essays on Combinatory Logic, Lambda-Calculus and Formalism. Academic Press, 1980.
L.Lamport. Garbage collection with multiple processes: An exercise in parallelism. In Proceedings of the 1976 International Conference on Parallel Processing, pages 50–54, 1976.
P.J.Landin. The mechanical evaluation of expressions, Computer Journal, 6(4):308–320, 1964.
R.D.Lins. Categorical multi-combinators. In Gilles Kahn, editor, Functional Programming Languages and Computer Architecture, pages 60–79. Springer-Verlag, September 1987. LNCS 274.
R.D. Lins. A shared memory architecture for parallel cyclic reference counting. Microprocessing and Microprogramming, 34:31–35, September 1991.
R.D. Lins. A multi-processor shared memory architecture for parallel cyclic reference counting. Microprocessing and Microprogramming, 35:563–568, September 1992.
R.D.Lins, G.G.Cruz Neto & R.F.Lima. Implementing and Optimising ΓCMC, Proceedings of Euromicro'94, pp.353–361, IEEE Computer Society Press, Sep. 1994.
R.D.Lins and R.E.Jones. Cyclic Weighted Reference Counting, Proceedings of WP&DP'93, K.Boyanov (editor), North-Holland, 1993.
R.D.Lins & B.O.Lira. ΓCMC: A Novel Way of Implementing Functional Languages, Journal of Programming Languages, 1:19–39, Chapmann & Hall, January 1993.
R.D.Lins, S.J.Thompson and S.Peyton Jones, On the Equivalence between CM-C and TIM, Journal of Functional Programming, 4(1):47–63, Cambridge University Press, January/1994.
R.D.Lins & P.G.Soares. Some Performance Figures for the G-Machine and its Optimisations. Microprocessing and Microprogramming 37(1993) 163–166, North-Holland.
R.D.Lins & S.J.Thompson. CM-CM: A categorical multi-combinator machine. In Proceedings of XVI Latino American Conference on Informatics, Assuncion, Paraguay, September 1990.
R.D.Lins & S.J.Thompson. Implementing SASL using categorical multicombinators. Software — Practice and Experience, 20(8):1137–1165, November 1990.
G. A. Magoo and D. F. Stanat. The FFP Machine. In High-Level Language Computer Architectures, pages 430–468, 1989.
D. L. McBurney and M. R. Sleep. Transputer-Based Experiments with the ZAPP Architecture. In PARLE '87, pages 242–259. Springer-Verlag LNCS 258, 1987.
J.McCarthy. Recursive functions of symbolic expressions and their computation by machine. Communications of the ACM, 3:184–195, 1960.
J, McGraw. SISAL: Streams and Iterations in a Single-Assignment Language: Reference Manual version 1.2. Lawrence Livermore Natl. Lab., 1985. Manual M-146, Revision 1.
R.Milner. Standard ML proposal. The ML/LCF/Hope Newsletter, 1(3), January 1984.
E.Moggi. Computational lambda calculus and monads, in Logic in Computer Science, California, IEEE Press, June 1989.
M.A.Musicante & R.D.Lins. GMC: A Graph Multi-Combinator Machine. Microprocessing and Microprogramming, 31:31–35, North-Holland, April 1991.
R. S. Nikhil. Id (version 90.1) reference manual. Technical Report CSG Memo 284-2, Lab. for Computer Science, MIT, July 1991.
R. S. Nikhil, Arvind, and J. Hicks. pH Language Proposal (Preliminary), 1st. September 1993. Electronic communication ou comp.lang.functional.
R. S. Nikhil G. M. Papadopoulos, and Arvind. *T: A Multithreaded Massively Parallel Architecture. In 19th. ACM Annual Symp. on Comp. Arch., pages 156–167, 1992.
J. T. O'Donnell. Bidirectional Fold and Scan. In [49], pages 193–200.
G. M. Papadopoulos. Implementation of a General Purpose Dataflow Multiprocessor. PhD thesis, Laboratory for Computer Science, MIT, August 1988.
N. Perry. Hope+. Technical Report IC/FPR/LANG/2.5.1/7 Issue 5, Imperial College, London, February 1988.
S. L. Peyton Jones, C. Clack, and J. Salkid. High-Performance Parallel Graph Reduction. In PARLE '89, pages 193–206, Eindhoven, The Netherlands, June 12–16, 1989. Springer-Verlag LNCS 365
S. L. Peyton Jones, C. Clack, J. Salkild, and M. Hardie. GRIP — a High-Performance Architecture for Parallel Graph Reduction. In FPCA '87, pages 98–112. Springer-Verlag LNCS 274, 1987.
S.L.Peyton Jones and J.Salkild. The spineless tagless g-machine. In Proc.ACM Conference on Functional Programming Languages and Computer Architecture, pages 184–201, Snowbird, USA, 1989.
S.L.Peyton Jones, A.Gordon and S.Finne. Concurrent Haskell. In Proc. of 23rd ACM Symposium on Principles of Programming Languages (POPL'96), Florida, 1996.
M. J. Plasmeijer and M. C. J. D. van Eekelen, editors. Proc. 5th. Intl. Workshop on Parallel Impl. of Funct. Langs. Nijmegen, 1993.
F.J. Pollack, G.W. Cox, D.W. Hammerstein, K.C. Kahn, K.K. Lai, and J.R. Rattner. Supporting Ada memory management in the iAPX-432. In Proceedings of the Symposium on Architectural Support for Programming Languages and Operating Systems, pages 117–131. SIGPLAN Notices (ACM) 17,4, 1982.
H. Richards. An Overview of Burroughs NORMA. Technical report, Austin Research Centre, Burroughs Corp., January 1985.
P. Roe. Parallel Programming using Functional Languages. PhD thesis, Glasgow University, April 1991.
V. Sarkar and J. Hennessy. Partitioning Parallel Programs for Macro-Dataflow. In ACM Symp. on Lisp and Functional Programming, pages 202–211, 1986.
W. Schreiner. Parallel Functional Programming — an Annotated Bibliography, Technical Report 93-24, RISC-Linz, Johannes Kepler University, Linz, Austria, May 1993.
D.Scott. Relating theories of the lambda-calculus. In J.P.Seldin and J.R.Hindley, editors, in To H.B.Curry: Essays on Combinatory Logic, Lambda-Calculus and Formalism. Academic Press, 1980.
M. R. Sleep, M. J. Plasmeijer, and M. C. J. D. van Eekelen, editors. Tem Graph Rewriting: Theory and Practice. Wiley, 1993.
M.Shapiro, O.Gruber and D.Plainfossé. A garbage detection protocol for a realistic distributed object-support system. Technical Report 1320, Rapports de Recherche, INRIA-Rocqencourt, Novembre 1990.
G.L. Steele. Multiprocessing compactifying garbage collection. Communications of the ACM, 18(9):495–508, September 1975.
G.L. Steele. Corrigendum: Multiprocessing compactifying garbage collection. Communications of the ACM, 19(6):354, June 1976.
W. R. Stoye. The Implementation of Functional Languages using Custom Hardware. PhD thesis, University of Cambridge, 1985.
S.J.Thompson & R.D.Lins. The Categorical Multi-Combinator Machine: CMCM, The Computer Journal, vol 35(2): 170–176, Cambridge University Press, April 1992.
P.W.Trinder, K.Hammond, J.S.Mattson Jr., A.S.Partridge. GUM: a portable parallel implementation of Haskell, Proc. of Programming Language Design and Implementation, Philadelfia, USA, May, 1996.
A.M.Turing, On computable numbers with an application to the Entscheidungsproblem, Proc. London Math. Soc. 42, pp 230–265.
D.A. Turner. A new implementation technique for applicative languages. Software — Practice and Experience, 9, 1979.
D.A.Turner. Functional Programming as executable Specifications, Phil.Transactions of the Royal Society of London 312, pp.363–388, 1984.
P.L. Wadler. Analysis of an algorithm for real-time garbage collection. Communications of the ACM, 19(9):491–500, September 1976.
I. Watson. Simulation of a Physical EDS Machine Architecture. Technical report, Department of Computer Science, University of Manchester, UK, September 1989.
I. Watson, V. Woods, P. Watson, R. Banach, M. Greenberg, and J, Sargeant. Flagship: a Parallel Architecture for Declarative Programming. In 15th. Annual ACM Symp, on Comp. Arch., page 124, 1988.
P. Watson and I. Watson. An Efficient Garbage Collection Scheme for Parallel Computer Architectures. In PARLE '87, pages 432–443. Springer Verlag LNCS 259, 1987.
P. Watson and I. Watson. Evaluating Functional Programs on the FLAG-SHIP Machine. In FPCA '87, pages 80–97. Springer-Verlag LNCS 274, September 1987.
T. Yuba, T. Shimada, K. Hiraki, and H. Kashiwagi. SIGMA-1: A Dataflow Computer for Scientific Computations. Computer Physics Communications, pages 141–148, 1985.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dueire Lins, R. (1997). Functional programming and parallel processing. In: Palma, J.M.L.M., Dongarra, J. (eds) Vector and Parallel Processing — VECPAR'96. VECPAR 1996. Lecture Notes in Computer Science, vol 1215. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-62828-2_134
Download citation
DOI: https://doi.org/10.1007/3-540-62828-2_134
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-62828-6
Online ISBN: 978-3-540-68699-6
eBook Packages: Springer Book Archive