Skip to main content

An implementation of an applicative file system

  • Functional Languages
  • Conference paper
  • First Online:
  • 107 Accesses

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 637))

Abstract

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.

Research reported herein was sponsored, in part, by the National Science Foundation under Grant Number DCR 90-02797.

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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.

    Article  Google Scholar 

  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. 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.

    Article  Google Scholar 

  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. 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. 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. Donald E. Knuth. The Art of Computer Programming 1 (2nd edition), Reading, MA, Addison Wesley (1973).

    Google Scholar 

  8. Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. The ObjectStore database system, Comm. ACM 34,10 (Oct 1991), 50–63.

    Article  Google Scholar 

  9. P. J. Landin. A correspondence between ALGOL 60 and Church's lambda notation: Part I. Comm. ACM 8,2 (Feb 1965), 89–101.

    Article  Google Scholar 

  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. R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. Cambridge, MA, MIT Press (1990).

    Google Scholar 

  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. Lightship Software. MacScheme © Version 1.9 development. Beaverton, OR (1989).

    Google Scholar 

  14. K. Thompson. UNIX Implementation. Bell System Tech. J. 57,6 (Jul–Aug 1978), 1931–1946.

    Google Scholar 

  15. J. Weizenbaum. Symmetric list processor. Comm. ACM 6,9 (Dec 1963), 524–544.

    Article  Google Scholar 

  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. 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. 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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Yves Bekkers Jacques Cohen

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Heck, B.C., Wise, D.S. (1992). An implementation of an applicative file system. In: Bekkers, Y., Cohen, J. (eds) Memory Management. IWMM 1992. Lecture Notes in Computer Science, vol 637. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0017194

Download citation

  • DOI: https://doi.org/10.1007/BFb0017194

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-55940-5

  • Online ISBN: 978-3-540-47315-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics