Towards a Strongly Typed Functional Operating System

  • Arjen van Weelden
  • Rinus Plasmeijer
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2670)


In this paper, we present Famke. It is a prototype implementation of a strongly typed operating system written in Clean. Famke enables the creation and management of independent distributed Clean processes on a network of workstations. It uses Clean’s dynamic type system and its dynamic linker to communicate values of any type, e.g. data, closures, and functions (i.e. compiled code), between running applications in a type safe way. Mobile processes can be implemented using Famke’s ability to communicate functions. We have built an interactive shell on top of Famke that enables user interaction. The shell uses a functional-style command language that allows construction of new processes, and it type checks the command line before executing it. Famke’s type safe run-time extensibility makes it a strongly typed operating system that can be tailored to a given situation.


Command Line Exception Handling Functional Language Dynamic Type Interactive Shell 
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.
    S. Peyton Jones and J. Hughes et al. Report on the programming language Haskell 98. University of Yale, 1999.
  2. 2.
    M. J. Plasmeijer and M. C. J. D. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison Wesley, 1993.Google Scholar
  3. 3.
    M. van Eekelen and R. Plasmeijer. Concurrent CLEAN Language Report (version 2.0, draft). University of Nijmegen, December 2001.
  4. 4.
    M. Abadi, L. Cardelli, B. Pierce, and G. Plotkin. Dynamic Typing in a Statically Typed Language. ACM Transactions on Programming Languages and Systems, 13(2):237–268, April 1991.CrossRefGoogle Scholar
  5. 5.
    M. Pil. Dynamic Types and Type Dependent Functions. In T. Davie K. Hammond and C. Clack, editors, Proceedings of the 10th International Workshop on the Implementation of Functional Languages, volume 1595 of Lecture Notes in Computer Science, pages 171–188. Springer-Verlag, 1998.Google Scholar
  6. 6.
    M. Vervoort and R. Plasmeijer. Lazy Dynamic Input/Output in the Lazy Functional Language Clean. In R. Peña and T. Arts, editors, Proceedings of the 14th International Workshop on the Implementation of Functional Languages, Lecture Notes in Computer Science. Springer-Verlag, 2002.Google Scholar
  7. 7.
    E.G.J.M.H. Nocker, J.E.W. Smetsers, M.C.J.D. van Eekelen, and M.J. Plasmeijer. Concurrent Clean. In E.H.L. Aarts, J. van Leeuwen, and M. Rem, editors, PARLE’ 91: Parallel Architectures and Languages Europe, Volume II, volume 506 of Lecture Notes in Computer Science, pages 202–219. Springer, 1991.Google Scholar
  8. 8.
    M. Wand. Continuation-Based Multiprocessing. In J. Allen, editor, Conference Record of the 1980 LISP Conference, pages 19–28, Palo Alto, CA, 1980. The Lisp Company.Google Scholar
  9. 9.
    K. Claessen. A Poor Man’s Concurrency Monad. Journal of Functional Programming, 9, May 1999.Google Scholar
  10. 10.
    S. Peyton Jones, A. Gordon, and S. Finne. Concurrent Haskell. In Conference Record of POPL’ 96: The 23 rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 295–308, St. Petersburg Beach, Florida, 21–24 1996.Google Scholar
  11. 11.
    S. Marlow, S.L. Peyton Jones, A. Moran, and J.H. Reppy. Asynchronous Exceptions in Haskell. In SIGPLAN Conference on Programming Language Design and Implementation, pages 274–285, 2001.Google Scholar
  12. 12.
    V. Stolz and F. Huch. Implementation of Port-based Distributed Haskell, 2001.
  13. 13.
    F. Huch and U. Norbisrath. Distributed Programming in Haskell with Ports. In M. Mohnen and P.W.M. Koopman, editors, Implementation of Functional Languages, 12th International Workshop, IFL 2000, volume 2011 of Lecture Notes in Computer Science, pages 107–121. Springer, September 2000.CrossRefGoogle Scholar
  14. 14.
    E.C. Cooper and J.G. Morrisett. Adding Threads to Standard ML. Technical Report CMU-CS-90-186, Pittsburgh, PA, 1990.Google Scholar
  15. 15.
    A.C. Lin. Implementing Concurrency For An ML-based Operating System. PhD thesis, Massachusetts Institute of Technology, February 1998.Google Scholar
  16. 16.
    J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, second edition, 1996.Google Scholar
  17. 17.
    G. Back, P. Wullmann, L. Stoller, W. C. Hsieh, and J. Lepreau. Java Operating Systems: Design and Implementation. Technical Report UUCS-98-015, 6, 1998.Google Scholar
  18. 18.
    O. Shivers. A Scheme Shell. Technical Report MIT/LCS/TR-635, 1994.Google Scholar
  19. 19.
    P. Haahr and B. Rakitzis. Es: A shell with higher-order functions. In USENIX Winter, pages 51–60, 1993.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Arjen van Weelden
    • 1
  • Rinus Plasmeijer
    • 1
  1. 1.Computer Science InstituteUniversity of NijmegenNijmegenThe Netherlands

Personalised recommendations