HaskSkel: Algorithmic Skeletons in Haskell

  • Kevin Hammond
  • Álvaro J. Rebón Portillo
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1868)


This paper introduces HaskSkel: an implementation of algorithmic skeletons for the non-strict functional language Haskell. The implementation is based on the evaluation strategy mechanism for Glasgow Parallel Haskell (GpH), and has been tested in both simulated and real parallel settings. Compared with most skeleton libraries, HaskSkel has a number of novel and interesting features: (strict) skeletons have been embedded in a non-strict language; the cost models and implementation modules are written entirely using standard Haskell (and may therefore be modified or extended by the user rather than being a fixed part of the compiler); it is possible to nest skeletons (though we have not yet defined nested cost models to support this); and the library is not restricted to a single bulk data type. Finally, in contrast with most other skeletal approaches, it is possible to freely mix HaskSkel skeletons with other parallel constructs that have been introduced using standard evaluation strategies.


Evaluation Strategy Parallel Task Absolute Speedup Algorithmic Skeleton Bulk Type 
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.
    Botorog, G.H., Kuchen, H.: Efficient Parallel Programming with Algorithmic Skeletons. In: Fraigniaud, P., Mignotte, A., Bougé, L., Robert, Y. (eds.) Euro-Par 1996. LNCS, vol. 1123, pp. 718–731. Springer, Heidelberg (1996)Google Scholar
  2. 2.
    Botorog, G.H., Kuchen, H.: Using Algorithmic Skeletons with Dynamic Data Structures. In: Saad, Y., Yang, T., Ferreira, A., Rolim, J.D.P. (eds.) IRREGULAR 1996. LNCS, vol. 1117. Springer, Heidelberg (1996)Google Scholar
  3. 3.
    Bratvold, T.A.: A Skeleton-Based Parallelising Compiler for ML. In: Proc. IFL 1993 — 5th International Workshop on the Implementation of Functional Languages, Nijmegen, The Netherlands, pp. 23–33 (1993)Google Scholar
  4. 4.
    Cole, M.I.: Algorithmic Skeletons: Structured Management of Parallel Computation. In: Research Monographs in Parallel and Distributed Computing. The MIT Press, Cambridge (1989)Google Scholar
  5. 5.
    Cole, M.I.: Algorithmic Skeletons. In: Hammond, K., Michaelson, G. (eds.) Research Directions in Parallel Functional Programming, ch. 13, pp. 289–303 (September 1999)Google Scholar
  6. 6.
    Danelutto, M., Cosmo, R.D., Leroy, X., Pelagatti, S.: Parallel Functional Programming with Skeletons: the OcamlP3l Experiment. In: Proc. 1998 ACM Sigplan Workshop on ML, pp. 31–39 (September 1998)Google Scholar
  7. 7.
    Darlington, J., Field, A.J., Harrison, P.G., Kelly, P.H.J., Sharp, D.W.N., Wu, Q., While, R.L.: Parallel Programming Using Skeleton Functions. In: Reeve, M., Bode, A., Wolf, G. (eds.) PARLE 1993. LNCS, vol. 694, pp. 146–160. Springer, Heidelberg (1993)Google Scholar
  8. 8.
    Hall, C.V., Hammond, K., Jones, S.L.P., Wadler, P.: Type Classes in Haskell. In: Sannella, D. (ed.) ESOP 1994. LNCS, vol. 788, pp. 241–256. Springer, Heidelberg (1994)Google Scholar
  9. 9.
    Hamdan, M., Michaelson, G.: A Framework for Nesting Algorithmic Skeletons. In: Proc. ParCo 1999 — Conference on Parallelism (1999)Google Scholar
  10. 10.
    Hammond, K., Loidl, H.-W., Partridge, A.: Visualising Granularity in Parallel Programs: A Graphical Winnowing System for Haskell. In: Proc. HPFC 1995 — Conference on High Performance Functional Computing, Denver, CO, pp. 208–221 (April 1995)Google Scholar
  11. 11.
    Herrmann, C., Lengauer, C., Günz, R., Laitenberger, J., Schaller, C.: A Compiler for HDC. Technical Report MIP-9907, Fakultät für Mathematik und Informatik, Universität Passau (May 1999)Google Scholar
  12. 12.
    Kesseler, M.: Constructing Skeletons in Clean –The Bare Bones. In: Proc. PASCO 1994 -— Symposium on Parallel Symbolic Computation, Linz, Austria, pp. 182–192 (1994)Google Scholar
  13. 13.
    Loidl, H.-W., Morgan, R., Trinder, P.W., Poria, S., Cooper, C., Jones, S.L.P., Garigliano, R.: Parallelising a Large Functional Program Or: Keeping LOLITA Busy. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 198–213. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  14. 14.
    Loidl, H.-W., Trinder, P.W.: Engineering Large Parallel Functional Programs. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 178–197. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  15. 15.
    MIT Laboratory for Computer Science. Impala – (IMplicitly PArallel LAnguage Application Suite),
  16. 16.
    Nicklisch, J., Jones, S.L.P.: An Exploration of Modular Programs. In: Proc. 1996 Glasgow Workshop on Functional Programming (October 1996)Google Scholar
  17. 17.
    Okasaki, C.: Edison User’s Guide. Department of Computer Science, Columbia University (May 1999), Online Document
  18. 18.
    Pelagatti, S.: Structured Development of Parallel Programs. Taylor and Francis, London (1998)Google Scholar
  19. 19.
    Jones, S.L.P.: Bulk Types with Class. In: Proc. 1996 Glasgow Workshop on Functional Programming (October 1996)Google Scholar
  20. 20.
    Jones, S.L.P., 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.: Haskell 98: A Nonstrict, Purely Functional Language (February 1999), Electronic document available on-line at
  21. 21.
    Jones, S.L.P., Jones, M., Meijer, E.: Type Classes: an Exploration of the Design Space. In: Proc. 1997 Haskell Workshop (May 1997)Google Scholar
  22. 22.
    Sipelstein, J., Blelloch, G.E.: Collection Oriented Languages. Proceedings of the IEEE 79(4) (April 1991)Google Scholar
  23. 23.
    Skillicorn, D.B.: Cost Modelling. In: Hammond, K., Michaelson, G. (eds.) Research Directions in Parallel Functional Programming, ch. 8, pp. 207–218 (September 1999)Google Scholar
  24. 24.
    Taylor, F.S.: Parallel Functional Programming by Partitioning. PhD thesis, University of London (September 1996)Google Scholar
  25. 25.
    Trinder, P.W., Hammond, K., Loidl, H.-W., Jones, S.L.P.: Algorithm + Strategy = Parallelism. Journal of Functional Programming 8(1), 23–60 (1998)zbMATHCrossRefMathSciNetGoogle Scholar
  26. 26.
    Trinder, P.W., Hammond, K., Mattson Jr., J.S., Partridge, A.S., Peyton Jones, S.L.: GUM: A Portable Parallel Implementation of Haskell. In: Proc. PLDI 1996 — 1996 ACM Conf. on Programming Language Design and Implementation, Philadelphia, PA, pp. 78–88 (May 1996)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Kevin Hammond
    • 1
  • Álvaro J. Rebón Portillo
    • 1
  1. 1.School of Computer ScienceUniversity of St AndrewsSt Andrews, Fife

Personalised recommendations