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.
References
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.
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.
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.
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.
Paul Hudak, Simon Peyton Jones, and Philip Wadler (eds.). Report on the Programming Language Haskell. SIGPLAN Notices 27,5 (May 1992), R1–R164.
Peter Henderson, Geraint A. Jones, and Simon B. Jones. The LispKit Manual. Tech. Monograph PRG-32 (2 vols.), Programming Research Grp., Oxford Univ. (1983).
Donald E. Knuth. The Art of Computer Programming 1 (2nd edition), Reading, MA, Addison Wesley (1973).
Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. The ObjectStore database system, Comm. ACM 34,10 (Oct 1991), 50–63.
P. J. Landin. A correspondence between ALGOL 60 and Church's lambda notation: Part I. Comm. ACM 8,2 (Feb 1965), 89–101.
John M. Lucassen and David K. Gifford. Polymorphic effect systems. Conf. Rec. 15th ACM Symp. on Principles of Programming Languages (Jan 1988), 47–57.
R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. Cambridge, MA, MIT Press (1990).
D. M. Ritchie and K. Thompson. The UNIX time-sharing system. Bell System Tech. J. 57, 6 (Jul–Aug 1978), 1905–1930.
Lightship Software. MacScheme © Version 1.9 development. Beaverton, OR (1989).
K. Thompson. UNIX Implementation. Bell System Tech. J. 57,6 (Jul–Aug 1978), 1931–1946.
J. Weizenbaum. Symmetric list processor. Comm. ACM 6,9 (Dec 1963), 524–544.
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.
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.
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).
Author information
Authors and Affiliations
Editor information
Rights 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