Skip to main content

Functional Languages

  • Reference work entry
Encyclopedia of Parallel Computing

Definition

Parallel functional languages are parallel variants of functional languages, that is, languages that treat computation as the evaluation of mathematical functions and avoid state and mutable data. Functional languages are founded on the lambda calculus. The majority of parallel functional languages add a small number of high-level parallel coordination constructs to some functional language, although some introduce parallelism without changing the language.

Discussion

Introduction

The potential of functional languages for parallelism has been recognized for over 30 years, for example [44]. The key advantage of functional languages is that they mainly, or solely, contain stateless computations. Subject to data dependencies between the computations, the evaluation of stateless computations can be arbitrarily reordered or interleaved while preserving the sequential semantics.

Parallel programs must not only specify the computation, that is, a correct and efficient algorithm,...

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Allen E, Chase D, Flood C, Luchangco V, Maessen J-W, Steele S, Ryu GL (2007) Project fortress: a multicore language for multicore processors. Linux Magazine, September 2007

    Google Scholar 

  2. Armstrong J (2007) Programming Erlang: software for a concurrent world. The Pragmatic Bookshelf, Raleigh, NC

    Google Scholar 

  3. Bacci B, Danelutto M, Orlando S, Pelagatti S, Vanneschi M (1995) P3 L: a structured high level programming language and its structured support. Concurrency Practice Exp 7(3):225–255

    Google Scholar 

  4. Berthold J, Loogen R (2007) Visualizing parallel functional program runs – case studies with the eden trace viewer. In: ParCo’07: Proceedings of the parallel computing: architectures, algorithms and applications, Jülich, Germany

    Google Scholar 

  5. Blelloch GE (1996) Programming parallel algorithms. Commun ACM 39(3):85–97

    Google Scholar 

  6. Breitinger S, Loogen R, Priebe S (1998) Parallel programming with Haskell and MPI. In: IFL’98 – International Workshop on the implementation of functional languages, University College London, UK, September 1998. Draft proceedings, pp 135–154

    Google Scholar 

  7. Blelloch GE, Miller GL, Talmor D (1996) Developing a practical projection-based parallel Delaunay algorithm. In: Symposium on Computational Geometry. ACM, Philadelphia, PA

    Google Scholar 

  8. Blelloch GE, Narlikar G (1997) A practical comparison of N-body algorithms. In: Parallel Algorithms, volume 30 of Series in Discrete Mathematics and Theoretical Computer Science. American Mathematical Society, University of Tennessee, Knoxville, TN

    Google Scholar 

  9. Cann D (1992) Retire Fortran? A debate rekindled. Commun ACM 35(8):81–89

    Google Scholar 

  10. Chamberlain BL, Callahan D, Zima HP (2007) Parallel programmability and the chapel language. Int J High Perform Comput Appl 21(3):291–312

    Google Scholar 

  11. Charles P, Donawa C, Ebcioglu K, Grothoff C, Kielstra A, von Praun C, Saraswat V, Sarkar V (2005) X10: An object-oriented approach to non-uniform cluster computing. In: OOPSLA’05. ACM Press, New York

    Google Scholar 

  12. Carriero N, Gelernter D (1989) How to write parallel programs: a guide to the perplexed. ACM Comput Surv 21(3):323–357

    Google Scholar 

  13. Chakravarty MMT (ed) (2009) ACM SIGPLAN Workshop on Declarative Aspects of Multicore Programming (DAMP’09). ACM Press, New York

    Google Scholar 

  14. Cole M (1999) Algorithmic skeletons. In: Hammond K, Michaelson G (eds) Research directions in parallel functional programming. Springer-Verlag, New York, pp 289–303

    Google Scholar 

  15. Darlington J, Guo Y, To HW (1996) Structured parallel programming: theory meets practice. In Milner R, Wand I (eds) Research Directions in Computer Science. Cambridge University Press, Cambridge, MA

    Google Scholar 

  16. Ellmenreich N, Lengauer C (2007) Costing stepwise refinements of parallel programs. Comp Lang Syst Struct 33(3–4):134–167 (special issue on semantics and cost models for high-level parallel programming)

    Google Scholar 

  17. Flanagan C, Nikhil RS (1996) pHluid: the design of a parallel functional language implementation on workstations. In: ICFP’96 – International Conference on functional programming, ACM Press, Philadelphia, PA, pp 169–179

    Google Scholar 

  18. Foster I, Olson R, Tuecke S (1992) Productive parallel programming: The PCN approach. J Scientific Program 1(1):51–66

    Google Scholar 

  19. Fluet M, Rainey M, Reppy J, Shaw A (2008) Implicitly-threaded parallelism in Manticore. In: ICFP’08 – International Conference on functional programming, ACM Press, Victoria, BC

    Google Scholar 

  20. Glasgow Haskell Compiler. WWW page, 2009. http://www.haskell.org/ghc/

  21. Herrmann C, Lengauer C (2000) HDC: a higher-order language for divide-and-conquer. Parallel Processing Lett 10(2–3): 239–250

    Google Scholar 

  22. Hammond K, Michaelson G (1999) Research directions in parallel functional programming. Springer-Verlag, New York

    MATH  Google Scholar 

  23. Hughes J (1989) Why functional programming matters. Computer J 32(2):98–107

    Google Scholar 

  24. Jones Jr D, Marlow S, Singh S (2009) Parallel performance tuning for haskell. In: Haskell ’09: Proceedings of the 2nd ACM SIGPLAN symposium on Haskell. ACM Press, New York

    Google Scholar 

  25. Kelly PHJ (1989) Functional programming for loosely-coupled multiprocessors. Research monographs in parallel and distributed computing. MIT Press, Cambridge, MA

    MATH  Google Scholar 

  26. Kelly P, Taylor F (2001) Coordination languages. In: Hammond K, Michaelson G (eds) Research directions in parallel functional programming. Springer-Verlag, New York, pp 305–321

    Google Scholar 

  27. Sisal Performance Data. WWW page, January 2001. http://www.llnl.gov/sisal/PerformanceData.

  28. Loogen R, Ortega-Mallen Y, Pena R (2005) Parallel functional programming in Eden. J Funct Program 15(3):431–475

    MATH  Google Scholar 

  29. MPI-2: Extensions to the message-passing interface. Technical report, University of Tennessee, Knoxville, TN, July 1997

    Google Scholar 

  30. Chakravarty MMT, Leshchinskiy R, Jones SP, Keller G (2008) Partial vectorisation of haskell programs. In DAMP’08: ACM SIGPLAN workshop on declarative aspects of multicore programming, San Francisco, CA

    Google Scholar 

  31. Michaelson G, Horiguchi S, Scaife N, Bristow P (2005) A parallel SML compiler based on algorithmic skeletons. J Funct Program 15(4):615–650

    MATH  Google Scholar 

  32. Nöcker EGJMH, Smetsers JEW, van Eekelen MCJD, Plasmeijer MJ (1991) Concurrent clean. In: PARLE’91 — parallel architectures and languages Europe, LNCS 505. Springer-Verlag, Veldhoven, the Netherlands, pp 202–219

    Google Scholar 

  33. O’Donnell J (1999) Data parallelism. In: Hammond K, Michaelson G (eds) Research directions in parallel functional programming. Springer-Verlag, New York, pp 191–206

    Google Scholar 

  34. Jones SLP, Hughes J, Augustsson L, Barton D, Boutel B, Burton W, Fasel J, Hammond K, Hinze R, Hudak P, Johnsson T, Jones M, Launchbury J, Meijer E, Peterson J, Reid A, Runciman C, Wadler P (1999) Haskell 98: a non-strict, purely functional language. Electronic document available on-line at http://www.haskell.org/, February 1999

  35. Peterson J, Trifonov V, Serjantov A (2000) Parallel functional reactive programming. In: PADL’00 – practical aspects of declarative languages, LNCS 1753. Springer-Verlag, New York, pp 16–31

    Google Scholar 

  36. Parallel Virtual Machine Reference Manual. University of Tennessee, August 1993

    Google Scholar 

  37. Rabhi FA, Gorlatch S (eds) (2002) Patterns and skeletons for parallel and distributed computing. Springer-Verlag, New York, 2002

    Google Scholar 

  38. Skillicorn DB, Cai W (1995) A cost calculus for parallel functional programming. J Parallel Distrib Comput 28(1):65–83

    MATH  Google Scholar 

  39. Taylor FS (1997) Parallel functional programming by partitioning. PhD thesis, Department of Computing, Imperial College, London

    Google Scholar 

  40. Trinder PW, Hammond K, Loidl H-W, Jones SLP (1998) Algorithm + Strategy = Parallelism. J Funct Program 8(1): 23–60

    MATH  Google Scholar 

  41. Trinder PW, Hammond K, Mattson Jr JS, Partridge AS, Jones SLP (1996) GUM: a portable implementation of Haskell. In: PLDI’96 — programming language design and implementation, Philadephia, PA, May 1996

    Google Scholar 

  42. Trinder PW, Loidl H-W, Pointon RF (2002) Parallel and distributed Haskells. JFP, 2002. Special issue on Haskell

    Google Scholar 

  43. Weber M (2000) hMPI — Haskell with MPI. WWW page, July 2000. http://www-i2.informatik.rwth-aachen.de/~michaelw/hmpi.html

  44. Wegner P (1971) Programming languages, information structures and machine organisation. McGraw-Hill, New York

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this entry

Cite this entry

Trinder, P., Loidl, HW., Hammond, K. (2011). Functional Languages. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_201

Download citation

Publish with us

Policies and ethics