MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Stretching the storage manager: weak pointers and stable names in Haskell (1999) [20 citations — 2 self]

Abstract:

Every now and then, a user of the Glasgow Haskell Compiler asks for a feature that requires specialised support from the storage manager. Memo functions, pointer equality, external pointers, nalizers, and weak pointers, are all examples. We take memo functions as our exemplar because they turn out to be the trickiest to support. We present no fewer than four distinct mechanisms that are needed to support memo tables, and that (in various combinations) satisfy a variety of other needs. The resulting set of primitives is undoubtedly powerful and useful. Whether they are too powerful is not yet clear. While the focus of our discussion is on Haskell, there is nothing Haskell-specic about most of the primitives, which could readily be used in other settings. 1 Introduction \Given an arbitrary function f, construct a memoised version of f; that is, construct a new function with the property that it returns exactly the same results as f, but if it is applied a second time to a particular a...

Citations

1122 Introduction to Functional Programming – Bird, Wadler - 1988
155 Concurrent haskell – Jones, Gordon, et al. - 1996
55 GUM: a portable parallel implementation of haskell – Trinder, Hammond, et al. - 1996
52 Lazy memo-functions – Hughes - 1985
23 Applicative caching – Keller, Sleep - 1986
18 Finalization in the collector interface – HAYES - 1992
8 Disposable memo functions – Cook, Launchbury - 1997
8 Guardians in a generation-based garbage collector – Dybvig, Bruggeman, et al. - 1993
1 Ephemerons: a new mechanism – Hayes - 1997
1 An ecient distributed garbage-collection algorithm – Lester - 1989