An implementation of an applicative file system
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 PhrasesReference counting heap mark/sweep garbage collection hardware Scheme functional programming
Unable to display preview. Download preview PDF.
- 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
- 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
- 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
- 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