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,...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
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
Armstrong J (2007) Programming Erlang: software for a concurrent world. The Pragmatic Bookshelf, Raleigh, NC
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
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
Blelloch GE (1996) Programming parallel algorithms. Commun ACM 39(3):85–97
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
Blelloch GE, Miller GL, Talmor D (1996) Developing a practical projection-based parallel Delaunay algorithm. In: Symposium on Computational Geometry. ACM, Philadelphia, PA
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
Cann D (1992) Retire Fortran? A debate rekindled. Commun ACM 35(8):81–89
Chamberlain BL, Callahan D, Zima HP (2007) Parallel programmability and the chapel language. Int J High Perform Comput Appl 21(3):291–312
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
Carriero N, Gelernter D (1989) How to write parallel programs: a guide to the perplexed. ACM Comput Surv 21(3):323–357
Chakravarty MMT (ed) (2009) ACM SIGPLAN Workshop on Declarative Aspects of Multicore Programming (DAMP’09). ACM Press, New York
Cole M (1999) Algorithmic skeletons. In: Hammond K, Michaelson G (eds) Research directions in parallel functional programming. Springer-Verlag, New York, pp 289–303
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
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)
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
Foster I, Olson R, Tuecke S (1992) Productive parallel programming: The PCN approach. J Scientific Program 1(1):51–66
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
Glasgow Haskell Compiler. WWW page, 2009. http://www.haskell.org/ghc/
Herrmann C, Lengauer C (2000) HDC: a higher-order language for divide-and-conquer. Parallel Processing Lett 10(2–3): 239–250
Hammond K, Michaelson G (1999) Research directions in parallel functional programming. Springer-Verlag, New York
Hughes J (1989) Why functional programming matters. Computer J 32(2):98–107
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
Kelly PHJ (1989) Functional programming for loosely-coupled multiprocessors. Research monographs in parallel and distributed computing. MIT Press, Cambridge, MA
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
Sisal Performance Data. WWW page, January 2001. http://www.llnl.gov/sisal/PerformanceData.
Loogen R, Ortega-Mallen Y, Pena R (2005) Parallel functional programming in Eden. J Funct Program 15(3):431–475
MPI-2: Extensions to the message-passing interface. Technical report, University of Tennessee, Knoxville, TN, July 1997
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
Michaelson G, Horiguchi S, Scaife N, Bristow P (2005) A parallel SML compiler based on algorithmic skeletons. J Funct Program 15(4):615–650
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
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
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
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
Parallel Virtual Machine Reference Manual. University of Tennessee, August 1993
Rabhi FA, Gorlatch S (eds) (2002) Patterns and skeletons for parallel and distributed computing. Springer-Verlag, New York, 2002
Skillicorn DB, Cai W (1995) A cost calculus for parallel functional programming. J Parallel Distrib Comput 28(1):65–83
Taylor FS (1997) Parallel functional programming by partitioning. PhD thesis, Department of Computing, Imperial College, London
Trinder PW, Hammond K, Loidl H-W, Jones SLP (1998) Algorithm + Strategy = Parallelism. J Funct Program 8(1): 23–60
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
Trinder PW, Loidl H-W, Pointon RF (2002) Parallel and distributed Haskells. JFP, 2002. Special issue on Haskell
Weber M (2000) hMPI — Haskell with MPI. WWW page, July 2000. http://www-i2.informatik.rwth-aachen.de/~michaelw/hmpi.html
Wegner P (1971) Programming languages, information structures and machine organisation. McGraw-Hill, New York
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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
DOI: https://doi.org/10.1007/978-0-387-09766-4_201
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering