| John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, Programming, pages 1--10, Pittsburgh, Pennsylvania, August 1982. ACM Press. |
....as depicted in figure 3.2. As the expression h 4 is hidden in the definition of the supercombinator M, h 4 will be evaluated each time M is applied i.e. twice. Again, one can do better: one can modify the lambda lifting algorithm so it abstracts away the maximal free expressions, as done in [Hug82] Then the resulting supercombinator program will be fully lazy in the sense that it has the same sharing properties as the original # expression when evaluated by a fully lazy implementation. Now E is translated into (as the maximal free expression h 4 is abstracted away from the definition of ....
John Hughes. Super combinators - a new implementation method for applicative languages. In ACM Symposium on Lisp and Functional Programming, Pittsburgh, pages 1--10, 1982.
....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 higher order attribute grammars. The algorithm is based on [Hughes 82] The basic idea of a super combinator is to define for each function which refers to global variables, an equivalent function to which the global variables are being passed explicitly. The resulting function is called a combinator, because it does not contain any free variables any more. At the ....
Hughes, R.J.M. Super-combinators: A New Implementation Method for Applicative Languages. In Proc. ACM Symp. on Lisp and Functional Progr., Pittsburgh, 1982.
....for future visits. Bindings computed by earlier visits are passed as an extra parameter to visit functions. The visit functions can be implemented in any imperative or functional language. Furthermore, visit functions have no free variables and can therefore be viewed as supercombinators [Hughes 82] Efficient caching is partly achieved by efficient equality testing between parameters of visit functions, which are trees, inherited attributes and bindings. Therefore, hash conslng for trees and bindings is used, so testing for equality between trees and between bindings is reduced to a fast ....
Hughes, R.J.M. Super-combinators: A New Implementation Method for Applicative Languages. In Proc. ACM Symp. on Lisp and Functional Progr., Pittsburgh, 1982. 14
....power induced by block structure and lexical scope. However block structure and lexical scope are not essential: in the mid 80 s, Hughes, Johnsson, and Peyton Jones showed how to lambda lift any block structured program into recursive equations, which can then be eciently compiled on the G machine [5, 6, 9]. Since then, lambda lifting has had its ups and downs: it is used for example in at least one compiler and two partial evaluators for the Scheme programming language [1, 2, 3] in an unpublished note, Down with Lambda Lifting [7] Meijer severely criticizes it; and it is no longer ....
....but scope insensitive, except for the names of the (ex )recursive equations, of course. We make it scope sensitive by preventing each function from passing variables whose end use is lexically visible. A simple example: Figure 1 displays the power function in ML. Many other examples exist [2, 4, 5, 6, 9, 10] but this one is simple and illustrative enough. One of its parameters is inert, i.e. it does not change through the recursive calls. The lambda lifted version carries the inert argument through each recursive call. The lambda dropped version does not, making it instead a free variable in the ....
John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, Conference Record of the
....have done here is to derive it using our rewriting account of partial evaluation. In particular, the resulting term need no post processing (such as erasing remaining annotations) Even systems with higher order types can be handled by first reducing the type order with supercombinator extraction [12], which one could call meta lifting since it is targeted at lifting out all higher order applications of . This is, in fact, what we did with the tree flattening Example 3.2.2, and what we use in the following general construction. Proof of Theorem 4.3.3. 14 Case ) Given the two level ....
John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, Conference Record of the
....lambda lifted or lambda dropped. For example, recursive equations can be eciently implemented on the Gmachine. This led Hughes, Johnsson, and Peyton Jones, in the mid 80 s, to devise lambda lifting as a meaning preserving transformation from blockstructured programs to recursive equations [21, 23, 34]. Recursive equations also o er a convenient format in Mix style partial evaluation [26] Indeed, modern partial evaluators such as Schism and Similix lambda lift source programs before specialization [9, 11] As a result, residual programs are also expressed as recursive equations. If ....
....uncurried and eager programs Johnsson concentrated on lambda lifting towards mutually recursive equations [23] but alternative approaches exist. The rst seems to be Hughes s supercombinator abstraction, where recursion is handled through self application and full laziness is a point of concern [21]. Peyton Jones provides a broad overview of fully lazy supercombinators [33, 34, 35] Essentially, instead of lifting only free variables, one lifts maximally free expressions. Fully lazy lambda dropping would amount to keeping maximally free expressions instead of identi ers in the initial calls ....
John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, 54 Conference Record of the
....have a procedure with ten parameters, you probably missed some. Yet recursive equations can be efficiently implemented. This led Hughes, Johnsson, and Peyton Jones, in the mid 80 s, to devise a meaningpreserving transformation from block structured programs to recursive equations: lambda lifting [18, 19, 28]. We review lambda lifting in Section 2. Recursive equations also offer a convenient format in Mix style partial evaluation [22] Modern partial evaluators such as Schism and Similix lambda lift source programs before specialization [8, 10] lambda lifting As a result, residual programs ....
....and eager programs Johnsson concentrated on lambda lifting towards mutually recursive equations [19] but alternative approaches exist. The first one seems to be Hughes s supercombinator abstraction, where recursion is handled through self application and full laziness is a point of concern [18]. Peyton Jones provides a broad overview about fully lazy supercombinators [27, 28, 29] Essentially, instead of lifting only free variables, one lifts maximally free expressions. Fully lazy lambda dropping would amount to keep maximally free expressions instead of identifiers in the initial calls ....
John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, Conference Record of the
....lambda lifted or lambda dropped. For example, recursive equations can be e#ciently implemented on the Gmachine. This led Hughes, Johnsson, and Peyton Jones, in the mid 80 s, to devise lambda lifting as a meaning preserving transformation from blockstructured programs to recursive equations [21,23,34]. Recursive equations also o#er a convenient format in Mix style partial evaluation [26] Indeed, modern partial evaluators such as Schism and Similix lambda lift source programs before specialization [9,11] source block structured program lambda lifting ## source recursive equations ....
....uncurried and eager programs Johnsson concentrated on lambda lifting towards mutually recursive equations [23] but alternative approaches exist. The first seems to be Hughes s supercombinator abstraction, where recursion is handled through self application and full laziness is a point of concern [21]. Peyton Jones provides a broad overview of fully lazy supercombinators [33 35] Essentially, instead of lifting only free variables, one lifts maximally free expressions. Fully lazy lambdadropping would amount to keeping maximally free expressions instead of identifiers in the initial calls to ....
John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, Conference Record of the
.... the program to a fixed set of combinators (closed lambda terms all of whose abstractions are at the head) these may be thought of as graph rewriting rules [123] Later it was shown to be beneficial to let the program under consideration guide the choice of combinators (so called supercombinators) [62]. In his seminal paper [123] David Turner describes the SK machine to support the implementation of SASL. The compiler is based on the equivalence between combinatory logic [113] and the # calculus [40] It generates code for what is essentially a two 744 S. Diehl et al. Future Generation ....
R.J.M. Hughes, Super-combinators: A new implementation method for applicative languages, ACM Symposium on Lisp and Functional Programming, Pittsburgh, Pennsylvania, ACM, August 1982, pp. 1--10.
....proposed. The compiler can use either a fixed set of combinators or program derived combinators. As argued in [9] a fixed set of combinators provides the finest granularity of computation, while program derived combinators can provide a more appropriate level of granularity. Supercombinators [13] are program derived combinators designed for sequential evaluation. Hudak presents serial combinators as an alternative suitable for parallel evaluation. His main criterion for serial combinators are: 1. They have no subexpressions that can be executed in parallel; thus, no available parallelism ....
R.J.M. Hughes, "Super-combinators: A new implementation method for applicative languages, " in ACM Symp. on Lisp and Functional Prog., 1982, pp. 1-10.
....delayed as long as possible by representing subterms of common origin by identical subgraphs. This way all duplicates profit from any reductions happening to that particular subterm (or graph, as it were) This technique was combined with combinator reduction by Turner (1979) and generalized by Hughes (1982) into supercombinator graph reduction which is the computational model underlying most implementations of functional languages today. The second issue, evaluation sequence, was addressed partly by Plotkin (1975) who identified the difference between the evaluation sequence or reduction strategy ....
Hughes, J. M. (1982), Super-combinators: A new implementation method for applicative languages, in `1982 ACM Symposium on LISP and Functional Programming', Pittsburgh, Pensylvania, pp. 1--10.
....of functional programming languages. Its task is to close local function definitions by parameterizing them over their free variables. Once all functions have been closed in this way (turned into combinators) they are moved to the top level where the compiler generates efficient code for them [9]. Lambda lifting is also a key transformation in program specializers, because it increases code sharing of specialized functions [4] The intention is that the specializer runs at most once for every pair of source function and specializationtime arguments. A log keeps track of the started ....
....but is not directly applicable to strict languages. The main difference between the two algorithm lies in the order in which they apply the elementary transformations and which restrictions they impose. The basic idea of Peyton Jones s algorithm is close enough to the remaining algorithms [9, 19, 20] that we do not have to consider them separately. In the following sections, we formalize the elementary transformation steps of lambda lifting, we examine their typing properties in an ML style type system, and we outline a refined lambda lifter that overcomes the typing problems. Our algorithm ....
R. J. M. Hughes. Super-combinators: A new implementation method for applicative languages. In ACM Symposium on LISP and Functional Programming, Pittsburgh, Pennsylvania, 1982. ACM Press.
....Evaluation (or Mixed Computation) technique [Ershov 82, Jones et al. 93] and 3. the Finite Differencing technique [Paige Koenig 82] and compare them with the strategies we have considered above. For other methods, such as: i) combinatory techniques [Turner 79] ii) supercombinator methods [Hughes 82] iii) local recursions [Bird 84a] iv) promotion strategies [Bird 84b] v) lambda liftings [Johnsson 85] and vi) lambda hoistings [Takeichi 87] we suggest to look at the original papers. There are some other techniques which have been proposed in the literature for transforming functional and ....
Hughes, R. J. M.: Super-combinators a New Implementation Method for Applicative Languages. Proc. 1982 ACM Symposium on Lisp and Functional Programming, Pittsburgh, PA, USA (1982) 1--10
....have done here is to derive it using our rewriting account of partial evaluation. In particular, the resulting term need no post processing (such as erasing remaining annotations) Even systems with higher order types can be handled by first reducing the type order with supercombinator extraction [10], which one could call meta lifting since it is targeted at lifting out all higher order applications of . This is, in fact, what we did with the tree flattening Example 3.2.2, and what we use in the following general construction. Proof of Theorem 4.3.3. Case ) Given the two level derivor, ....
John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, Conference Record of the 1982 ACM Symposium on Lisp and Functional Programming, pages 1--10, Pittsburgh, Pennsylvania, August 1982.
....map is used to square each of these numbers, and the function fold is used to add these together. Programs in the language consist of an expression to evaluate and a set of function definitions. It is assumed that the compiler for the language implements the full laziness technique described in [ 5 ] . Nested function definitions are not allowed in the language. Programs involving nested definitions can be transformed into this restricted form of program using a technique called lambda lifting [ 7 ] For the purposes of this paper, constants (e.g. numbers) and basic functions ( Gamma, ....
....as Psi is the only blazing annotation which is used. 3 This is the occurrence of a variable as the bound variable in a lambda abstraction, or within the pattern of a case expression. 4 This relies upon the fact that the language is implemented using the full laziness technique described in [ 5 ] , since it is possible to duplicate references to a partially applied function which contains expressions that will be re evaluated when it is fully applied. fold ( 0 (map square (until ( n) repeat ( 1) 1) where fold = f Psi :a:xs:case xs of N il : a Cons x xs : fold f (f a x) ....
R.J.M. Hughes. Supercombinators: A new implementation method for applicative languages. In Proceedings of the ACM Conference on LISP and Functional Programming, pages 1--10, 1982.
.... is used in conjunction with the tupling strategy [Pet84] Apart from accumulation, lambda abstraction can also be used to derive programs with continuations, e.g. for deriving complicated programs for traversing datastructures in one pass as in [Bir84b] Related techniques are described in [Hug82, Joh85, Tak87] 12 Hughes novel implementation of lists In [Hug86] the idea is presented that a list x could be represented by rep(x) y:x k y; with corresponding abstraction function abs(x) x[ It is shown how this allows a straightforward derivation of the fast reverse (cf. ....
John Hughes. Super-combinators: A new implementation method for applicative languages. In Conference Record of the 1982 ACM Symposium on LISP and Functional Programming, pages 1--10, Pittsburgh, August 1982.
....C Figure 1.1: Structure of the Naira compiler The pattern matching compiler takes the AST input, compiles the syntactic sugar inside patterns and produces an AST closer to the underlying computation model. The lambda lifter then inputs the resulting AST and turns functions into supercombinators [Hugh82, John87, PeLe91] Lambda lifting is particularly beneficial in a parallel implementation since supercombinator invocations can be distributed across the processors of the parallel machine without worrying about access to free variables. The AST is then type checked and further simplified to ....
RJM Hughes, Supercombinators - A New Implementation Method for Applicative Languages. In Proc. of the 1982 ACM Symposium of Lisp and Functional Programming, pp. 1-10, Pittsburgh, 1982.
....performance of the remaining programs is unchanged. An observation about supercombinators, however, tells us that this interpretive overhead can be reduced without a separate stack for markers. 7 Supercombinators The TIM assumes that all programs have been converted either into supercombinators [5] or lambda lifted combinators [6] Let us assume conversion to supercombinators as described in [5] Starting with the leftmost, innermost lambda abstraction of the program, every lambda abstraction v.E is converted into an application of a new supercombinator C to the maximal free expressions e 1 ....
....tells us that this interpretive overhead can be reduced without a separate stack for markers. 7 Supercombinators The TIM assumes that all programs have been converted either into supercombinators [5] or lambda lifted combinators [6] Let us assume conversion to supercombinators as described in [5]. Starting with the leftmost, innermost lambda abstraction of the program, every lambda abstraction v.E is converted into an application of a new supercombinator C to the maximal free expressions e 1 : e n of E. The new supercombinator C itself is then defined as C i 1 : i n v = E[ i 1 e ....
R. J. M. Hughes. Super-combinators: A New Implementation Method for Applicative Languages. In 1982 ACM Symposium on LISP and Functional Programming, pages 1--10, August 1982.
....MMH96] whereas closure conversion attempts to optimize the representation of closures, lambda lifting attempts change the closure allocation behavior of a program or even to remove the need for some closures entirely. Incremental lambda lifting is also distinct from the super combinators of [Hug82] in that procedures are not necessarily lifted to the top level. The process of incremental lambda lifting can be performed repeatedly in order to bring a deeply nested procedure to the top level, as would be done with traditional lambda lifting. However, being able to lift only one level at a ....
R. J. M. Hughes. Super-combinators: A new implementation method for applicative languages. In Proc. 1982 ACM Symposium on Lisp and Functional Programming, pages 1--10, 1982.
....with local definitions. The traditional way of dealing with local nonrecursive and recursive definitions (let and letrec) both in defining their meaning and in implementations, is to treat them as syntactic sugaring for lambda expressions and the fix point combinator Y [Lan66] Tur79] [Hug82]. The following two transformation rules are then used. let x = e 1 in e 2 ) x:e 2 )e 1 letrec x = e 1 in e 2 ) let x = Y (x:e 1 ) in e 2 The resulting expression contains lambda expressions in place of the lets and letrecs, and can then be treated as described before. The following example ....
R. J. M. Hughes. Super Combinators---A New Implementation Method for Applicative Languages. In Proceedings of the 1982 ACM Symposium on Lisp and Functional Programming, pages 1--10, Pittsburgh, 1982.
....rule i 0 . The logic CL q is useful for creating implementations of by value languages. Burge [2] rediscovered combinators for computer science. Turner [14] popularized and improved the translation using a larger set of combinators so that the resulting CL programs were shorter. Then Hughes [8] developed supercombinators that made the translation linear in terms of size. Hudak and Goldberg [7] created serial combinators that are used to execute CL programs on multiprocessors without shared memory. Finally, Kennaway and Sleep [9] developed director strings that allow even more efficient ....
R. Hughes. Super-combinators: A new implementation method for applicative languages. In Sym. on Lisp and Functional Prog., pages 1--10. ACM, Aug 1982.
.... types, both user defined and predefined ones (e.g. integers and lists) After parsing and type checking the compiler transforms pattern matching into simple case expressions; see [Aug85] The program is then transformed into a set of global recursive functions, reminiscent of super combinators [Hug82] This transformation is called lambda lifting and is described in [Joh85] Then each of the global functions are compiled into G machine code. The G machine is the abstract machine that embodies our paradigm for compiled graph reduction; it is described in [Joh84] Finally, the G machine code ....
R. J. M. Hughes. Super Combinators---A New Implementation Method for Applicative Languages. In Proceedings of the 1982 ACM Symposium on Lisp and Functional Programming, pages 1--10, Pittsburgh, 1982.
....in terms of the conjunction operator, and thus, we do not need separate strategies for composition and tupling. The goal generalization strategy presented in this paper is also related to techniques for higher order generalization in functional programming, such as the supercombinators technique [6], lambda lifting [7] lambda hoisting [17] and the lambda abstraction strategy [14] because the introduction of goal variables is analogous to the introduction of a higher order object. However, we insist on the fact that programs of our transformation language which allows for the use of goal ....
R. J. M. Hughes. Super-combinators: a new implementation method for applicative languages. In Proc. ACM Symposium on Lisp and Functional Programming, Pittsburgh, PA, USA, pages 1--10. ACM Press, 1982.
No context found.
John Hughes. Super combinators: A new implementation method for applicative languages. In Daniel P. Friedman and David S. Wise, editors, Programming, pages 1--10, Pittsburgh, Pennsylvania, August 1982. ACM Press.
No context found.
Hughes, R. J. M., Super Combinators: A New Implementation Method for Applicative Languages. In Proceedings of the 1982 ACM Symposium on Lisp and Functional Programming, pp.1-10.
First 50 documents
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