This article demonstrates how a powerful and expressive abstraction from concurrency theory—monads of resumptions—plays a dual rôle as a programming tool for concurrent applications. The article demonstrates how a wide variety of typical OS behaviors may be specified in terms of resumption monads known heretofore exclusively in the literature of programming language semantics. We illustrate the expressiveness of the resumption monad with the construction of an exemplary multitasking kernel in the pure functional language Haskell.


Output Channel Functional Programming Functional Language Trace Model Message Queue 
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.
    Harrison, W.: The Essence of Multithreading Codebase, available from
  2. 2.
    Moggi, E.: An Abstract View of Programming Languages. Technical Report ECS-LFCS-90-113, Department of Computer Science, Edinburgh University (1990)Google Scholar
  3. 3.
    Papaspyrou, N., Maćoš, D.: A Study of Evaluation Order Semantics in Expressions with Side Effects. Journal of Functional Programming 10(3), 227–244 (2000)zbMATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Hancock, P., Setzer, A.: Interactive programs in dependent type theory. In: Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic, pp. 317–331. Springer, London (2000)Google Scholar
  5. 5.
    Papaspyrou, N.: A Resumption Monad Transformer and its Applications in the Semantics of Concurrency. In: Proceedings of the 3rd Panhellenic Logic Symposium (2001) (An expanded technical report is available from the author by request)Google Scholar
  6. 6.
    Krstic, S., Launchbury, J., Pavlovic, D.: Categories of processes enriched in final coalgebras. In: Honsell, F., Miculan, M. (eds.) ETAPS 2001 and FOSSACS 2001. LNCS, vol. 2030, pp. 303–317. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  7. 7.
    Jacobs, B., Poll, E.: Coalgebras and Monads in the Semantics of Java. Theoretical Computer Science 291(3), 329–349 (2003)zbMATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    Plotkin, G.: A Powerdomain Construction. SIAM Journal of Computation 5(3), 452–487 (1976)zbMATHCrossRefMathSciNetGoogle Scholar
  9. 9.
    Henderson, P.: Purely functional operating systems. In: Functional Programming and Its Applications: an Advanced Course, pp. 177–191. Cambridge University Press, Cambridge (1982)Google Scholar
  10. 10.
    Stoye, W.: Message-based Functional Operating Systems. Science of Computer Programming 6(3), 291–311 (1986)zbMATHCrossRefGoogle Scholar
  11. 11.
    Turner, D.: An Approach to Functional Operating Systems. In: Research Topics in Functional Programming, pp. 199–217 (1990)Google Scholar
  12. 12.
    Cupitt, J.: The Design and Implementation of an Operating System in a Functional Language. PhD thesis, Computing Laboratory, Univ. Kent (1992)Google Scholar
  13. 13.
    Carter, D.: Deterministic Concurrency. PhD thesis, Department of Computer Science, University of Bristol (1994)Google Scholar
  14. 14.
    Spiliopoulou, E.: Concurrent and Distributed Functional Systems. Technical Report CS-EXT-1999-240, Univ. Bristol (1999)Google Scholar
  15. 15.
    Launchbury, J., Peyton Jones, S.: Lazy functional state threads. In: Proceedings of PLDI 1994, pp. 24–35 (1994)Google Scholar
  16. 16.
    Claessen, K.: A poor man’s concurrency monad. Journal of Functional Programming 9(3), 313–323 (1999)zbMATHCrossRefGoogle Scholar
  17. 17.
    Wand, M.: Continuation-based multiprocessing. In: Proceedings of the 1980 ACM Conference on LISP and Functional Programming, pp. 19–28. ACM Press, New York (1980)CrossRefGoogle Scholar
  18. 18.
    Flatt, M., Findler, R., Krishnamurthi, S., Felleisen, M.: Programming languages as operating systems (or revenge of the son of the lisp machine). In: Proceedings of ICFP 1999, pp. 138–147 (1999)Google Scholar
  19. 19.
    van Weelden, A., Plasmeijer, R.: Towards a strongly typed functional operating system. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670, Springer, Heidelberg (2003)CrossRefGoogle Scholar
  20. 20.
    Filinski, A.: Representing monads. In: Proceedings of POPL 1994 (1994)Google Scholar
  21. 21.
    Ganz, S., Friedman, D., Wand, M.: Trampolined style. In: Proceedings of ICFP 1999, pp. 18–27 (1999)Google Scholar
  22. 22.
    Harper, R., Lee, P., Pfenning, F.: The Fox project: Advanced language technology for extensible systems. Technical Report CMU-CS-98-107, CMU (1998)Google Scholar
  23. 23.
    Alexander, D., Arbaugh, W., Hicks, M., Kakkar, P., Keromytis, A., Moore, J., Gunder, C., Nettles, S., Smith, J.: The switchware active network architecture. IEEE Network (1998)Google Scholar
  24. 24.
    Schmidt, D.: Denotational Semantics: A Methodology for Language Development. Allyn and Bacon, Boston (1986)Google Scholar
  25. 25.
    Bakker, J.d., Vink, E.d.: Control Flow Semantics. Foundations of Computing Series. MIT Press, Cambridge (1996)Google Scholar
  26. 26.
    Espinosa, D.: Semantic Lego. PhD thesis, Columbia University (1995)Google Scholar
  27. 27.
    Filinski, A.: Representing layered monads. In: Proceedings of POPL 1999 (1999)Google Scholar
  28. 28.
    Liang, S.: Modular Monadic Semantics and Compilation. PhD thesis, Yale University (1998)Google Scholar
  29. 29.
    Peyton Jones, S. (ed.): Haskell 98 Language and Libraries, the Revised Report. Cambridge University Press, Cambridge (2003)Google Scholar
  30. 30.
    Roscoe, W.: Theory and Practice of Concurrency. Prentice-Hall, Englewood Cliffs (1998)Google Scholar
  31. 31.
    Harrison, W., Hook, J.: Achieving information flow security through precise control of effects. In: 18th IEEE Computer Security Foundations Workshop (CSFW 2005) (2005)Google Scholar
  32. 32.
    Harrison, W., Harrison, R.: Domain specific languages for cellular interactions. In: Proceedings of the 26th Annual IEEE International Conference on Engineering in Medicine and Biology (2004)Google Scholar
  33. 33.
    Regev, A., Panina, E., Silverman, W., Cardelli, L., Shapiro, E.: Bioambients: An abstraction for biological compartments. Theoretical Computer Science 325(1), 141–167 (2004)zbMATHCrossRefMathSciNetGoogle Scholar
  34. 34.
    Peyton Jones, S.: Tackling the Awkward Squad: Monadic Input/Output, Concurrency, Exceptions, and Foreign-language Calls in Haskell. In: Engineering Theories of Software Construction, pp. 47–96 (2000)Google Scholar
  35. 35.
    Peyton Jones, S., Wadler, P.: Imperative functional programming. In: Proceedings of POPL 1993, pp. 71–84 (1993)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • William L. Harrison
    • 1
  1. 1.Department of Computer ScienceUniversity of MissouriColumbiaUSA

Personalised recommendations