Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Applicative caching
Keller R., Sleep M. ACM Transactions on Programming Languages and Systems8 (1):88-108,1986.Type:Article
Date Reviewed: Aug 1 1986

In cases where it is relatively expensive in resources to compute functions, it may be advisable to expand the programmed versions of those functions to contain a store, or cache, of values already computed. Then, if the same argument is presented to a function twice or more, recomputations can be replaced by (hopefully) less expensive searches for the corresponding value in the cache. The organization of the cache can vary according to the nature of the function and its use. In principle, any result one finds in a textbook or paper on data structures is appropriate if it decreases the computing resources that a function with a cache needs.

The paper considers these observations against the background of functional, or applicative, programming; here, the possibilities of recursion and multiple tasking make it difficult or impossible for the programmer even to use bindings of values to variables as convenient ways to avoid the recomputation problem mentioned above.

The primary emphasis is on extensions to a specimen functional programming language in order to support caching of already computed results. The extensions include the idea of a caching functional, which allows the programmer to select details of data structuring for implementations of functions with caches. Questions of purity of implementation are also considered, i.e., whether or not particular features or primitives themselves can be implemented in an applicative language.

The contribution of the paper to functional programming is twofold: as well as proposing language extensions, it covers issues of caching that are necessary to address if functional programming is to be computationally efficient in practice. Given that one of the chief virtues of functional programming is the absence of side-effects, it is worth mentioning that the authors’ choice of example (Jacobi method for numerical solution of partial differential equations at points of a coordinate grid) to illustrate both of the contributions has the side-effect of drawing attention to the wide difference between “necessary” and “sufficient.”

Aside from functional programming, the paper can be read as a useful tutorial on the design choices that face any programmer of functions that may benefit from the caching of values.

Reviewer:  J. A. Campbell Review #: CR110397
Bookmark and Share
 
Monitors (D.2.5 ... )
 
 
Applicative (Functional) Languages (D.3.2 ... )
 
 
Applicative (Functional) Programming (D.1.1 )
 
 
Concurrent Programming (D.1.3 )
 
 
Language Classifications (D.3.2 )
 
 
Processors (D.3.4 )
 
  more  
Would you recommend this review?
yes
no
Other reviews under "Monitors": Date
InspectJ: program monitoring for visualisation using aspectJ
Khaled R., Noble J., Biddle R.  Conference in research and practice in information technology (Proceedings of the twenty-sixth Australasian computer science conference, Adelaide, Australia,359-368, 2003. Type: Proceedings
Aug 21 2003
A Hybrid Monitor for Behavior and Performance Analysis of Distributed Systems
Haban D., Wybranietz D. IEEE Transactions on Software Engineering 16(2): 197-211, 1990. Type: Article
Feb 1 1991
A real-time monitor for a distributed real-time operating system
Tokuda H., Kotera M., Mercer C. ACM SIGPLAN Notices 24(1): 68-77, 1989. Type: Article
Sep 1 1990
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy