Eden – Parallel Functional Programming with Haskell

  • Rita Loogen
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7241)


Eden is a parallel functional programming language which extends Haskell with constructs for the definition and instantiation of parallel processes. Processes evaluate function applications remotely in parallel. The programmer has control over process granularity, data distribution, communication topology, and evaluation site, but need not manage synchronisation and data exchange between processes. The latter are performed by the parallel runtime system through implicit communication channels, transparent to the programmer. Common and sophisticated parallel communication patterns and topologies, so-called algorithmic skeletons, are provided as higher-order functions in a user-extensible skeleton library written in Eden. Eden is geared toward distributed settings, i.e. processes do not share any data, but can equally well be used on multicore systems. This tutorial gives an up-to-date introduction into Eden’s programming methodology based on algorithmic skeletons, its language constructs, and its layered implementation on top of the Glasgow Haskell compiler.


Runtime System Dynamic Channel Parent Process Remote Data Process Abstraction 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Alt, M., Gorlatch, S.: Adapting Java RMI for grid computing. Future Generation Computer Systems 21(5), 699–707 (2004)CrossRefGoogle Scholar
  2. 2.
    Batcher, K.E.: Sorting networks and their applications. In: Proc. AFIPS Spring Joint Computer Conference, vol. 32, pp. 307–314 (1968)Google Scholar
  3. 3.
    Berthold, J.: Towards a Generalised Runtime Environment for Parallel Haskells. In: Bubak, M., van Albada, G.D., Sloot, P.M.A., Dongarra, J. (eds.) ICCS 2004. LNCS, vol. 3038, pp. 297–305. Springer, Heidelberg (2004); Workshop on Practical Aspects of High-level Parallel Programming — PAPP 2004CrossRefGoogle Scholar
  4. 4.
    Berthold, J.: Explicit and Implicit Parallel Functional Programming: Concepts and Implementation. PhD thesis, Philipps-Universität Marburg, Germany (2008)Google Scholar
  5. 5.
    Berthold, J., Dieterle, M., Lobachev, O., Loogen, R.: Distributed Memory Programming on Many-Cores A Case Study Using Eden Divide-&-Conquer Skeletons. In: ARCS 2009, Workshop on Many-Cores. VDE Verlag (2009)Google Scholar
  6. 6.
    Berthold, J., Dieterle, M., Loogen, R.: Implementing Parallel Google Map-Reduce in Eden. In: Sips, H., Epema, D., Lin, H.-X. (eds.) Euro-Par 2009. LNCS, vol. 5704, pp. 990–1002. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  7. 7.
    Berthold, J., Dieterle, M., Loogen, R., Priebe, S.: Hierarchical Master-Worker Skeletons. In: Hudak, P., Warren, D.S. (eds.) PADL 2008. LNCS, vol. 4902, pp. 248–264. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  8. 8.
    Berthold, J., Klusik, U., Loogen, R., Priebe, S., Weskamp, N.: High-Level Process Control in Eden. In: Kosch, H., Böszörményi, L., Hellwagner, H. (eds.) Euro-Par 2003. LNCS, vol. 2790, pp. 732–741. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  9. 9.
    Berthold, J., Loogen, R.: Skeletons for Recursively Unfolding Process Topologies. In: Parallel Computing: Current & Future Issues of High-End Computing, ParCo 2005. NIC Series, vol. 33, pp. 835–842 (2006)Google Scholar
  10. 10.
    Berthold, J., Loogen, R.: Parallel Coordination Made Explicit in a Functional Setting. In: Horváth, Z., Zsók, V., Butterfield, A. (eds.) IFL 2006. LNCS, vol. 4449, pp. 73–90. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  11. 11.
    Berthold, J., Loogen, R.: Visualizing Parallel Functional Program Runs – Case Studies with the Eden Trace Viewer. In: Parallel Computing: Architectures, Algorithms and Applications, ParCo 2007. NIC Series, vol. 38, pp. 121–128 (2007)Google Scholar
  12. 12.
    Berthold, J., Al Zain, A., Loidl, H.-W.: Scheduling Light-Weight Parallelism in ArTCoP. In: Hudak, P., Warren, D.S. (eds.) PADL 2008. LNCS, vol. 4902, pp. 214–229. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  13. 13.
    Breitinger, S.: Design and Implementation of the Parallel Functional Language Eden. PhD thesis, Philipps-Universität of Marburg, Germany (1998)Google Scholar
  14. 14.
    Breitinger, S., Klusik, U., Loogen, R.: From (Sequential) Haskell to (Parallel) Eden: An Implementation Point of View. In: Palamidessi, C., Meinke, K., Glaser, H. (eds.) ALP 1998 and PLILP 1998. LNCS, vol. 1490, pp. 318–334. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  15. 15.
    Bresenham, J.E.: Algorithm for computer control of a digital plotter. IBM Systems Journal 4(1), 25–30 (1965)CrossRefGoogle Scholar
  16. 16.
    Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press (1989)Google Scholar
  17. 17.
    de la Encina, A.: Formalizando el proceso de depuración en programación funcional paralela y perezosa. PhD thesis, Universidad Complutense de Madrid (Spain) (2008) (in Spanish)Google Scholar
  18. 18.
    Dean, J., Ghemawat, S.: MapReduce: Simplified Data Processing on Large Clusters. Communications of the ACM 51(1), 107–113 (2008)CrossRefGoogle Scholar
  19. 19.
    Dieterle, M., Berthold, J., Loogen, R.: A Skeleton for Distributed Work Pools in Eden. In: Blume, M., Kobayashi, N., Vidal, G. (eds.) FLOPS 2010. LNCS, vol. 6009, pp. 337–353. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  20. 20.
    Dieterle, M., Horstmeyer, T., Loogen, R.: Skeleton Composition Using Remote Data. In: Carro, M., Peña, R. (eds.) PADL 2010. LNCS, vol. 5937, pp. 73–87. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  21. 21.
    Encina, A., Llana, L., Rubio, F., Hidalgo-Herrero, M.: Observing Intermediate Structures in a Parallel Lazy Functional Language. In: Principles and Practice of Declarative Programming (PPDP 2007), pp. 109–120. ACM (2007)Google Scholar
  22. 22.
    Encina, A., Rodríguez, I., Rubio, F.: pHood: A Tool to Analyze Parallel Functional Programs. In: Implementation of Functional Languages (IFL 2009), pp. 85–99. Seton Hall University, New York (2009), Technical Report, SHU-TR-CS-2009-09-1Google Scholar
  23. 23.
    Gentleman, W.M.: Some complexity results for matrix computations on parallel computers. Journal of the ACM 25(1), 112–115 (1978)CrossRefzbMATHGoogle Scholar
  24. 24.
    GHC: The Glasgow Haskell Compiler,
  25. 25.
    Hammond, K., Berthold, J., Loogen, R.: Automatic Skeletons in Template Haskell. Parallel Processing Letters 13(3), 413–424 (2003)MathSciNetCrossRefGoogle Scholar
  26. 26.
    Haskell: A non-strict functional programming language,
  27. 27.
    Hidalgo-Herrero, M.: Semánticas Formales para un Lenguaje Funcional Paralelo. PhD thesis, Universidad Complutense de Madrid (Spain) (2004) (in Spanish)Google Scholar
  28. 28.
    Hidalgo-Herrero, M., Ortega-Mallén, Y.: An Operational Semantics for the Parallel Language Eden. Parallel Processing Letters 12(2), 211–228 (2002)CrossRefGoogle Scholar
  29. 29.
    Hidalgo-Herrero, M., Ortega-Mallén, Y.: Continuation Semantics for Parallel Haskell Dialects. In: Ohori, A. (ed.) APLAS 2003. LNCS, vol. 2895, pp. 303–321. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  30. 30.
    Hidalgo-Herrero, M., Ortega-Mallén, Y., Rubio, F.: Analyzing the Influence of Mixed Evaluation on the Performance of Eden Skeletons. Parallel Computing 32(7-8), 523–538 (2006)CrossRefGoogle Scholar
  31. 31.
    Hidalgo-Herrero, M., Ortega-Mallén, Y., Rubio, F.: Comparing Alternative Evaluation Strategies for Stream-Based Parallel Functional Languages. In: Horváth, Z., Zsók, V., Butterfield, A. (eds.) IFL 2006. LNCS, vol. 4449, pp. 55–72. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  32. 32.
    Jeff Epstein, S.P., Black, A.P.: Towards Haskell in the cloud. In: Haskell 2011: Proceedings of the 4th ACM Symposium on Haskell, pp. 118–129. ACM (2011)Google Scholar
  33. 33.
    Klusik, U., Loogen, R., Priebe, S., Rubio, F.: Implementation Skeletons in Eden: Low-Effort Parallel Programming. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 71–88. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  34. 34.
    Klusik, U., Ortega, Y., Peña, R.: Implementing Eden - or: Dreams Become Reality. In: Hammond, K., Davie, T., Clack, C. (eds.) IFL 1998. LNCS, vol. 1595, pp. 103–119. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  35. 35.
    Lobachev, O.: Implementation and Evaluation of Algorithmic Skeletons: Parallelisation of Computer Algebra Algorithms. PhD thesis, Philipps-Universität Marburg, Germany (2011)Google Scholar
  36. 36.
    Berthold, J., Dieterle, M., Lobachev, O., Loogen, R.: Parallel FFT with Eden Skeletons. In: Malyshkin, V. (ed.) PaCT 2009. LNCS, vol. 5698, pp. 73–83. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  37. 37.
    Lobachev, O., Loogen, R.: Towards an Implementation of a Computer Algebra System in a Functional Language. In: Autexier, S., Campbell, J., Rubio, J., Sorge, V., Suzuki, M., Wiedijk, F. (eds.) AISC/Calculemus/MKM 2008. LNCS (LNAI), vol. 5144, pp. 141–154. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  38. 38.
    Loogen, R., Ortega-Mallén, Y., Peña, R., Priebe, S., Rubio, F.: Parallelism Abstractions in Eden. In: [53], ch. 4, pp. 95–128. Springer (2003)Google Scholar
  39. 39.
    Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel Functional Programming in Eden. Journal of Functional Programming 15(3), 431–475 (2005)CrossRefzbMATHGoogle Scholar
  40. 40.
    Maier, P., Trinder, P., Loidl, H.-W.: Implementing a High-level Distributed-Memory parallel Haskell in Haskell. In: IFL 2011: 23rd Int. Workshop on the Implementation of Functional Languages. LNCS, vol. 7257. Springer (2012) (to appear)Google Scholar
  41. 41.
    Marlow, S., Maier, P., Loidl, H.-W., Aswad, M.K., Trinder, P.W.: Seq no more: Better strategies for parallel Haskell. In: Haskell Symposium 2010. ACM Press (2010)Google Scholar
  42. 42.
    Marlow, S., Peyton-Jones, S.L., Singh, S.: Runtime support for multicore Haskell. In: ICFP 2009 — Intl. Conf. on Functional Programming, pp. 65–78. ACM Press (2009)Google Scholar
  43. 43.
    MPI: The Message-Passing Interface,
  44. 44.
    Peña, R., Segura, C.: Non-determinism Analysis in a Parallel-Functional Language. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 1–18. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  45. 45.
    Peyton Jones, S., Gordon, A., Finne, S.: Concurrent Haskell. In: Proceedings of POPL 1996, pp. 295–308. ACM Press (1996)Google Scholar
  46. 46.
    Peyton Jones, S., Leshchinskiy, R., Keller, G., Chakravarty, M.: Harnessing the Multicores: Nested Data Parallelism in Haskell. In: Foundations of Software Technology and Theoretical Computer Science, FSTTCS 2008 (2008)Google Scholar
  47. 47.
    Peyton Jones, S.L.: Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine. Journal of Functional Programming 2(2), 127–202 (1992)CrossRefzbMATHGoogle Scholar
  48. 48.
    Pickenbrock, B.: Developing a Multicore Implementation of Eden. Bachelor thesis, Philipps-Universität Marburg (2011) (in German)Google Scholar
  49. 49.
    Pope, B., Astapov, D.: Haskell-mpi, Haskell bindings to the MPI library (2010),
  50. 50.
    Priebe, S.: Dynamic Task Generation and Transformation Within a Nestable Workpool Skeleton. In: Nagel, W.E., Walter, W.V., Lehner, W. (eds.) Euro-Par 2006. LNCS, vol. 4128, pp. 615–624. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  51. 51.
    Priebe, S.: Structured Generic Programming in Eden. PhD thesis, Philipps-Universität Marburg, Germany (2007)Google Scholar
  52. 52.
    PVM: Parallel Virtual Machine,
  53. 53.
    Rabhi, F.A., Gorlatch, S. (eds.): Patterns and Skeletons for Parallel and Distributed Computing. Springer (2003)Google Scholar
  54. 54.
    Rubio, F.: Programación Funcional Paralela Eficiente en Eden. PhD thesis, Universidad Complutense de Madrid, Spain (2001) (in Spanish)Google Scholar
  55. 55.
    Segura, C.: Análisis de programas en lenguajes funcionales paralelos. PhD thesis, Universidad Complutense de Madrid, Spain (2001) (in Spanish)Google Scholar
  56. 56.
    Simon Marlow, S.P., Newton, R.: A monad for deterministic parallelism. In: Haskell 2011: Proceedings of the 4th ACM Symposium on Haskell, pp. 71–82. ACM (2011)Google Scholar
  57. 57.
    Trinder, P., Hammond, K., Loidl, H.-W., Peyton Jones, S.: Algorithm + Strategy = Parallelism. Journal of Functional Programming 8(1), 23–60 (1998)MathSciNetCrossRefzbMATHGoogle Scholar
  58. 58.
    Trinder, P.W., Hammond, K., Mattson Jr., J.S., Partridge, A.S., Peyton Jones, S.L.: GUM: a portable implementation of Haskell. In: Proceedings of Programming Language Design and Implementation (1996)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Rita Loogen
    • 1
  1. 1.Fachbereich Mathematik und InformatikPhilipps-Universität MarburgGermany

Personalised recommendations