59 citations found. Retrieving documents...
John Hughes. Lazy memo-functions. In JeanPierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, pages 129--146, September 1985.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents  Next 50

Memoization in Type-Directed Partial Evaluation - Balat, Danvy (2002)   (Correct)

....of the isomorphism functions o#sets the time taken by type directed partial evaluation, even in the absence of memoization. 4. 4 Common sub expression elimination Furthermore, we are now in position to integrate common sub expression elimination by reflecting at function type into memo functions [32, 35]. These memo functions are indexed by the global stack to ensure their coherence, since a reflected function can be applied in conditional branches with distinct lexical scope. In the absence of sums, the memo functions can be used uniformly. To illustrate common sub expression elimination, let ....

John Hughes. Lazy memo-functions. In Jean-Pierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, number 201 in Lecture Notes in Computer Science, pages 129--146, Nancy, France, September 1985. SpringerVerlag.


Dynamic Programming via Static Incrementalization - Liu, Stoller (2002)   (13 citations)  (Correct)

....Department, State University of New York at Stony Brook, Stony Brook, NY 11794. Phone: 631 632 f8463,1627g. Email: fliu,stollerg cs.sunysb.edu. Memoization uses a mechanism that is separate from the original program to save the result of each function call or reduction as the program executes [1, 19, 20, 25, 27, 28, 40, 41, 45, 49, 51]. The idea is to keep a separate table of solutions to subproblems, modify recursive calls to rst look up in the table, and then, if the subproblem has been computed, use the saved result, otherwise, compute it and save the result in the table. This method has two advantages. First, the original ....

J. Hughes. Lazy memo-functions. In Proceedings of the 2nd Conference on Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 129-146. Springer-Verlag, Berlin, Sept. 1985.


Sharing of Computations - Amtoft (1993)   (1 citation)  (Correct)

..... Which kind of equality to use when deciding whether a function has been called with the same argument before The natural choice is structural equality , but this can lead to very time consuming comparisons and in the case of lazy data structures even cause infinite loops. Therefore, Hug85] suggests to use equality of pointers instead (of course, then less computation will be shared) Memoization is a top down method its bottom up counterpart is often termed tabulation and is treated e.g. in [Bir80] and [Coh83] In [Bir80] the top down method is termed exact tabulation ....

John Hughes. Lazy memo-functions. In International Conference on Functional Programming Languages and Computer Architecture, pages 129--146. Springer Verlag, LNCS 201, 1985.


Strictification of Lazy Functions - Saraiva, Swierstra, Kuiper, Pennings (1996)   (Correct)

.... that the arguments to these functions can be evaluated before the call, without changing the termination properties, makes the resulting evaluators efficient and simple, and thus there is no need anymore to implement the much more complicated, and much less efficient, caching of lazy functions [Hug85]. In this paper we present the techniques we present our techniques in the setting of functional languages and transformations thereof. One might foresee that these methods find their way into a compiler, as has happened with techniques like deforestation and virtual data structures [Wad90, ....

John Hughes. Lazy memo-functions. In Jean-Pierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of LNCS, pages 129--146. SpringerVerlag, September 1985.


Higher Order Attribute Grammars - Swierstra, Vogt (1991)   (17 citations)  (Correct)

....are copied and substituted by need by applying the simple reduction rules associated with these combinators. Although the resulting implementation, using graph reduction, is very elegant, it leads to an explosion in the number of combinator occurrences and thus of basic reduction steps. In [Hughes 85] supercombinators are introduced; although the first and third problem are not solved its advantages in solving the fourth problem are such that it is still considered an attractive approach. In this section we will describe a compiler for lambda expressions to supercombinator code in terms of ....

Hughes, R.J.M. Lazy memo functions. In Proc. Conference on Functional Progr. and Comp. Architecture, Nancy, pages 129-146, LNCS 201, Springer Verlag, 1985.


Cycle Therapy: A Prescription for Fold and Unfold on Regular.. - Turbak, Wells (2001)   (1 citation)  (Correct)

....ity predicate takes time linear in the size of the set. Other operations (e.g. ordering predicates or hashing functions) are necessary for more e#cient membership tests. There is good reason to omit node equality in a declarative language: it can reduce the set of valid program transformations [9]. For instance, if Haskell were to support a Lisp like eq operator on list nodes, # reduction would no longer be meaning preserving. e.g. x eq(x,x) 1,2] should evaluate to True, but eq( 1,2] 1,2] might evaluate to False, because independently allocated copies of the list [1,2] need not ....

....a Lisp like eq operator on list nodes, # reduction would no longer be meaning preserving. e.g. x eq(x,x) 1,2] should evaluate to True, but eq( 1,2] 1,2] might evaluate to False, because independently allocated copies of the list [1,2] need not be pointer equal (unless hash consing [9, 15] is used) The above examples highlight the following problems involving cyclic data structures: 1. Naively generating a conceptually cyclic structure via operations like unfold can lead to an unbounded representation even when bounded representations exist. 2. Naively accumulating a result over ....

[Article contains additional citation context not shown here]

R. Hughes. Lazy memo-functions. In IFIP Int'l Conf. Funct. Program. Comput. Arch., vol. 201 of LNCS, Nancy, France, 1985. Springer-Verlag.


Efficient Execution of Declarative Programs - Frank (2001)   (Correct)

....transitive closure problem calculates all possible paths through the graph. If we are only interested in a particular start or end point, then many of these paths are irrelevant. 2. 3 Context The performance advantages of memoization have long been known to the functional programming community [16, 10]. The efficiency advantages of combining goaldirected evaluation with memoization for declarative programming were realized initially in the context of parsing [19] The declarative database community started with bottom up evaluation techniques and developed a compile (query optimization) time ....

John Hughes. Lazy memo-functions. In Proceedings of the 2nd Conference on Functional Programming Languages and Computer Architecture (FPCA), volume 201 of Lecture Notes in Computer Science, pages 129--146, Nancy, France, September 1985. Springer.


The Data Field Model - Lisper, Hammarlund (2001)   (Correct)

....data field will not be applicable to such fields. We define data fields to be hyperstrict when seen as functions since memoised data fields seem important (in conventional models for high performance computing memoised structures are the norm) Although nonstrict lookup procedures are possible [32], hyperstrict lookup is easier to implement and seems conceptually simpler. The out of bounds error value, which we denote by , has algebraic properties similar to the divergent element (see [46] for details) and sometimes we will even identify them (as in Haskell [31] although they ....

J. Hughes. Lazy memo-functions. In J.-P. Jouannaud, editor, Proc. Functional Programming Languages and Computer Architecture, pages 129--146, Nancy, France, Sept. 1985. Springer-Verlag.


Forms/3: A First-Order Visual Language to Explore.. - Burnett, Atwood.. (2001)   (6 citations)  (Correct)

....caching, a programmer traveling back and forth through time could force the program to re display the same values many times, generating duplicate computations. To solve this problem, as much cache space as desired can be used to reduce the number of duplicated computations via lazy memoization [Hughes 1985], an adaptation of memoization [Michie 1968] for lazy evaluation. Although management of the cache itself requires time, it has been shown both theoretically and practically to be far less than the time required to maintain the display without saved values [Burnett et al. 1998] 5. Related Work ....

J. Hughes, "Lazy Memo-functions," Functional Programming Languages and Computer Architecture, LNCS #201, (Jean-Pierre Jouannaud, ed.), Nancy, France, September 16-19, 1985, 129-146.


RG: A Case-Study for Aspectoriented Programming - Mendhekar, Kiczales, Lamping (1997)   (26 citations)  (Correct)

....OF ADDRESSING THE PERFORMANCE PROBLEMS The strategies to address these performance problems are easy to devise, and straightforward to state. The first problem, redundant computation, can be addressed with memoization. This is a common technique used in implementing purely functional systems [4]. Each primitive filter can keep a record of the input images it has seen and of what output images result from filtering them. Each invocation of the filter results in a comparison with inputs it has already seen and simply returns the previously computed output if there is a match. The second ....

Hughes, R.J.M. Lazy Memo Functions. in proc. IFIP Conference on Functional Programming Languages and Computer Architecture. 1985. Nancy: Springer Verlag.


Dynamic Programming via Static Incrementalization - Liu, Stoller (2000)   (13 citations)  (Correct)

....Department, 215 Lindley Hall, Indiana University, Bloomington, IN 47405. Phone: 812 855 f4373,7979g. Email: fliu,stollerg cs.indiana.edu. 1 Memoization uses a mechanism that is separate from the original program to save the result of each function call or reduction as the program executes [1, 19, 20, 25, 27, 28, 40, 41, 45, 49, 51]. The idea is to keep a separate table of solutions to subproblems, modify recursive calls to rst look up in the table, and then, if the subproblem has been computed, use the saved result, otherwise, compute it and save the result in the table. This method has two advantages. First, the original ....

J. Hughes. Lazy memo-functions. In Proceedings of the 2nd Conference on Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 129-146. Springer-Verlag, Berlin, Sept. 1985.


Polygonizing Implicit Surfaces in a Purely Functional Way - Zörner, Koopman, van..   (Correct)

....is repeatedly calculated for a large number of points. The point in the middle of a cube for instance is a corner point of its eight subcubes. Moreover it is a corner of one of the subcubes of each subcube, and so on. It seems worthwhile to share this computation using some form of memoization [5, 12]. We could further try to share the approximated zeros on neighboring edges of a tetrahedron, but we will not consider this here. Clean has no built in memoization mechanism. So sharing computation has to be indicated explicitly. There are two problems concerning sharing. Firstly there is a very ....

John Hughes. Lazy Memo-functions. In Jean-Pierre Jouannaud: Functional Programming Languages and Computer Architecture. LNCS 201, Nancy, France, 1985


Dynamic Slicing In Higher-Order Programming Languages - Biswas (1997)   (1 citation)  (Correct)

....demand is essentially a backwards analysis. This work demonstrates that we can still provide an elegant declarative specification of the analysis through an augmented set based semantics. The static analysis technique developed here cannot plug space leaks stemming from memo hash tables [34] or order of evaluation [9] But, as shown by the example in the Introduction, the analysis can prevent creation of certain void cells and can reduce drag. Further work needs to be done to investigate exactly how significant this optimisation can be. The language Standard ML contains imperative ....

J. Hughes. Lazy Memo--functions. In J. Jouannaud, editor, Proceedings of the Conference on Functional Programming and Computer Architecture, pages 129--146. Springer-Verlag LNCS, 1985.


Using Attribute Grammars to Derive Efficient Functional Programs - Kuiper, Swierstra (1987)   (2 citations)  (Correct)

....: N patf :patf . From the conditions it follows that the above is the definition of an attribute grammar. It is straightforward to check that, after renaming some identifiers, F=SIM(AG) 2 In the remainder of this section we will demonstrate our technique with a simple example. The problem[4] is to find the deepest nodes of a tree. A tree may have many leaves at the same depth so the result is a list of leaves. The program we derive is lazy: only lists that are needed to construct the answer are computed. The first and inefficient solution consists of two functions, depth and front. ....

J. Hughes. Lazy memo-functions. In J-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, pages 129-- 146, Springer, 1985.


The Vesta Language for Configuration Management - Christine Hanna Roy (1993)   (13 citations)  (Correct)

....recompute their results. This multi level caching scheme permits Vesta to build and rebuild large software systems efficiently since it maximizes the amount of work that does not need to be redone. Vesta caching has a superficial resemblance to the memoizing technique for functional languages [Hughes] Keller and Sleep] in that both store a function application and its result value in a table for later reuse. However, memoizing is manual, since a programmer must specify which functions are to be saved, and ephemeral, since memo tables don t last across different instances of the language ....

R.J.M. Hughes. "Lazy memo functions", Proc. Conference on Functional Programming and Computer Architecture, Nancy, 129-46, LNCS, 201. Spinger Verlag.


Composing contracts: an adventure in financial engineering.. - Jones, Eber, Seward (2000)   (5 citations)  (Correct)

....reactive animations [6] the diculty of extracting net lists from Hawk circuit descriptions [4] and in other settings besides. What makes it particularly frustrating is that the sharing is absolutely apparent in the source program. One solution is to suggest that eval be made a memo function [10, 3, 12], but we do not nd it satisfactory. Losing sharing can give rise to an unbounded amount of duplicated work, so it seems unpleasant to relegate the maintenance of proper sharing to an operational mechanism. For example, a memo function may be deceived by unevaluated arguments, or ....

John Hughes. Lazy memo-functions. In Proc Aspenas workshop on implementation of functional languages, February 1985.


Efficient Computation via Incremental Computation - Liu (1999)   (Correct)

.... techniques [20] by Bird on promotion and accumulation [9, 10] by Broy, Bauer, Partsch, and others on transforming recursive functional programs in CIP [14, 7, 63] by Smith on finite differencing of functional programs in KIDS [79] as well as the work pioneered by Michie on memoization [55, 18, 39, 82] and by others on related techniques [15, 8, 64] The most basic idea can be traced back to the Difference Engine of Charles Babbage in the 19th century [31] Our approach exploits program semantics, using analysis of data structures and control structures, to discover incrementality not ....

J. Hughes. Lazy memo-functions. In Proceedings of the 2nd Conference on Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 129-- 146. Springer-Verlag, Berlin, Sept. 1985.


An Algebraic Dynamic Programming Approach to the.. - Giegerich, Kurtz.. (1999)   (Correct)

....will also repeatedly parse the same subwords when called from different contexts. The latter inefficiency is removed by introducing tabulation of intermediate parser results (representing alignments of suffixes of the two inputs) In other words, we employ DP. In contrast to memoization [7], DP uses explicitly and statically allocated tables. type Parsetable b = Array (Int,Int) b] tabulated: Parser b Parsetable b tabulated q = array ( 0,0) m,n) i,j) q (i,j) i [0. m] j [0. n] We modify the previous grammar, such that all parsers that do a non constant amount of work ....

J. Hughes. Lazy Memo-Function. In Proceedings of the Conference on Functional Programming Languages and Computer Architecture, pages 129--146. Lecture Notes in Computer Science 201, Springer Verlag, 1985.


Analysis and Caching of Dependencies - Mart'in Abadi Digital   (Correct)

No context found.

John Hughes. Lazy memo-functions. In JeanPierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, pages 129--146, September 1985.


Selective Memoization - Umut Acar Guy (2003)   (1 citation)  (Correct)

No context found.

R. J. M. Hughes. Lazy memo-functions. In Proceedings 1985.


Selective Memoization - Acar, Blelloch, Harper (2003)   (1 citation)  (Correct)

No context found.

R. J. M. Hughes. Lazy memo-functions. In Proceedings 1985.


Selective Memoization - Umut Acar Guy (2003)   (1 citation)  (Correct)

No context found.

R. J. M. Hughes. Lazy memo-functions. In Proceedings 1985.


Cycle Therapy: - Prescription For Fold (2001)   (Correct)

No context found.

R. Hughes. Lazy memo-functions. In IFIP Int'l Conf. Funct. Program. Comput. Arch., vol. 201 of LNCS, Nancy, France, 1985. Springer-Verlag.


Selective Memoization - Acar, Blelloch, Harper (2003)   (1 citation)  (Correct)

No context found.

R. J. M. Hughes. Lazy memo-functions. In Proceedings 1985.


How to Write a Financial Contract - Jones, Eber   (Correct)

No context found.

Hughes, J. (1985). Lazy memo-functions. In Proc Aspenas workshop on implementation of functional languages.

First 50 documents  Next 50

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC