An implementation of an applicative file system

  • Brian C. Heck
  • David S. Wise
Functional Languages
Part of the Lecture Notes in Computer Science book series (LNCS, volume 637)


A purely functional file system has been built on top of pure Scheme. It provides persistent structures and massive storage expected of file systems, without explicit side-effects like read and write. The file system becomes an additional, lazy argument to programs that would read from it, and an additional result from functions that would alter it.

Functional programming on lazy structures replaces in-place side-effects with a significant storage management problem, handled by conjoining the heap to the file system. A hardware implementation of reference counting is extended out to manage sectors, as well as the primary heap. Backing it is a garbage collector of heap and of disk (i.e. UNIX's fsck), needed only at reboot.

Additional Key Words and Phrases

Reference counting heap mark/sweep garbage collection hardware Scheme functional programming 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    John Backus. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Comm. ACM, 21,8 (August 1978), 613–641.CrossRefGoogle Scholar
  2. 2.
    David J. McNally and Antony J. T. Davie. Two models for integrating persistence and lazy functional languages. SIGPLAN Notices, 26,5 (May 1991), 43–52.Google Scholar
  3. 3.
    Daniel P. Friedman and David S. Wise. Garbage collecting a heap which includes a scatter table. Information Processing Letters 5,6 (Dec 1976), 161–164.CrossRefGoogle Scholar
  4. 4.
    Daniel P. Friedman and David S. Wise. Aspects of applicative programming for file systems. In Proc. of ACM Conf. on Language Design for Reliable Software, SIGPLAN Notices 12,3 (Mar 1977), 41–55.Google Scholar
  5. 5.
    Paul Hudak, Simon Peyton Jones, and Philip Wadler (eds.). Report on the Programming Language Haskell. SIGPLAN Notices 27,5 (May 1992), R1–R164.Google Scholar
  6. 6.
    Peter Henderson, Geraint A. Jones, and Simon B. Jones. The LispKit Manual. Tech. Monograph PRG-32 (2 vols.), Programming Research Grp., Oxford Univ. (1983).Google Scholar
  7. 7.
    Donald E. Knuth. The Art of Computer Programming 1 (2nd edition), Reading, MA, Addison Wesley (1973).Google Scholar
  8. 8.
    Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. The ObjectStore database system, Comm. ACM 34,10 (Oct 1991), 50–63.CrossRefGoogle Scholar
  9. 9.
    P. J. Landin. A correspondence between ALGOL 60 and Church's lambda notation: Part I. Comm. ACM 8,2 (Feb 1965), 89–101.CrossRefGoogle Scholar
  10. 10.
    John M. Lucassen and David K. Gifford. Polymorphic effect systems. Conf. Rec. 15th ACM Symp. on Principles of Programming Languages (Jan 1988), 47–57.Google Scholar
  11. 11.
    R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. Cambridge, MA, MIT Press (1990).Google Scholar
  12. 12.
    D. M. Ritchie and K. Thompson. The UNIX time-sharing system. Bell System Tech. J. 57, 6 (Jul–Aug 1978), 1905–1930.Google Scholar
  13. 13.
    Lightship Software. MacScheme © Version 1.9 development. Beaverton, OR (1989).Google Scholar
  14. 14.
    K. Thompson. UNIX Implementation. Bell System Tech. J. 57,6 (Jul–Aug 1978), 1931–1946.Google Scholar
  15. 15.
    J. Weizenbaum. Symmetric list processor. Comm. ACM 6,9 (Dec 1963), 524–544.CrossRefGoogle Scholar
  16. 16.
    John H. Williams and Edward Wimmers. Sacrificing simplicity for convenience: where do you draw the line? Conf. Rec. 15th ACM Symp. on Principles of Programming Languages (Jan 1988), 169–179.Google Scholar
  17. 17.
    David S. Wise. Design for a multiprocessing heap with on-board reference counting. In P. Jouannaud (ed.), Functional Programming Languages and Computer Architecture, Lecture Notes in Computer Science 201, Berlin, Springer (Sept 1985), 289–304.Google Scholar
  18. 18.
    David S. Wise, Caleb Hess, Willie Hunt, and Eric Ost. Uniprocessor performance of a reference-counting hardware heap. Tech. Rept., Computer Science Department, Indiana Univ. (in preparation).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Brian C. Heck
    • 1
  • David S. Wise
    • 1
  1. 1.Computer Science DepartmentIndiana UniversityBloomingtonUSA

Personalised recommendations