359 citations found. Retrieving documents...
S.L.P. Jones, The Implementation of Functional Programming Languages, Prentice-Hall, Englewood Cliffs, NJ, 1987.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents  Next 50

On Stepwise Explicit Substitution - Kamareddine, NederPelt (1993)   (7 citations)  (Correct)

....: y] but rather only yx[x : y] In other words, we only substitute one occurrence of x by y and continue the substitution later. This issue of being able to follow substitution and decide how much to do and how much to postpone, has become a major one in functional language implementation (see [25]) However, in order to have this spreading control over substitution and to be able to manipulate those partially substituted terms, we must render the latter from being a metalevel notion to an object level notion. It turns out that our new notation will enable such rendering efficiently and ....

....For this purpose one may decide to postpone substitutions as long as possible ( lazy evaluations ) This can yield profits, since substitution is an inefficient, maybe even exploding, process by the many repetitions it causes. This is the ground for the so called graph reduction, see e.g. [25]. We shall describe substitution as a step by step procedure, giving the user the possibilities to use it as he wishes. Our step wise treatment of substitution and reduction is connected with the wish to unravel these processes in atomary steps. This is no restriction, since we can also combine ....

S.L. Peyton Jones, The Implementation of Functional Programming Languages, (Prentice-Hall, Englewood Cliffs, 1987).


Notes on Functional Programming with Gofer - Cunningham (1995)   (3 citations)  (Correct)

....( n) 1 n [2. Example: Suppose we want a function to extract the decimal digits of a positive integer. digits : Int [Int] digits = reverse . map ( mod 10) takeWhile ( 0) iterate ( 10) digits 178 (Not actual reduction steps) reverse . map ( mod 10) takeWhile ( 0) [178,17,1,0,0, = reverse . map ( mod 10) 178,17,1] reverse [8,7,1] 1,7,8] 178 15.3 Prime Numbers: Sieve of Eratosthenes Reference: This is based in part on section 7.3 of the Bird Wadler textbook [2] The Greek mathematician Eratosthenes described essentially the following procedure for generating ....

....want a function to extract the decimal digits of a positive integer. digits : Int [Int] digits = reverse . map ( mod 10) takeWhile ( 0) iterate ( 10) digits 178 (Not actual reduction steps) reverse . map ( mod 10) takeWhile ( 0) 178,17,1,0,0, reverse . map ( mod 10) [178,17,1] = reverse [8,7,1] 1,7,8] 178 15.3 Prime Numbers: Sieve of Eratosthenes Reference: This is based in part on section 7.3 of the Bird Wadler textbook [2] The Greek mathematician Eratosthenes described essentially the following procedure for generating the list of all prime numbers. This ....

S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice Hall International, New York, 1987.


Calculi of Generalized beta-Reduction and Explicit.. - Kamareddine, Ríos, Wells (1998)   (Correct)

....subterm can wait until the subterm is the focus of computation. This allows all of these substitutions to be done at once, thus improving locality of reference. Obtaining more control over the ordering of work has become an important issue in functional programming language implementation (cf. [Jon87]) The flexibility provided by explicit substitution also allows postponing unneeded work indefinitely (i.e. avoiding it completely) This can yield profits, since implicit substitution can be an inefficient, maybe even exploding, process, owing to the many repetitions it causes. Another benefit ....

....e.g. environments. Because explicit substitution is closer to real implementations, it has the potential to provide a more accurate cost model. This possibility is particularly interesting in light of the difficulty encountered in formulating a useful cost model in terms of graph reduction [LM96, Jon87]. Proof assistants may benefit from explicit substitution, owing to the desire to perform substitutions locally and in a formal manner. Local substitutions are needed as follows. Given xx[x: y] one may not be interested in having yy as the result of xx[x: y] but rather only yx[x: y] In other ....

S. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, Englewood Cliffs, NJ, 1987. 41


Demonstrating Lambda Calculus Reduction - Sestoft (2001)   (1 citation)  (Correct)

.... In practical functional programming languages such as Scheme [11] Standard ML [6] or Haskell [10] programs (terms) cannot have free variables, and reductions are not performed under lambda abstractions or other variable binders, as this would considerably complicate their ecient implementation [9]. However, an implementation of lambda calculus reduction must perform reductions under lambda abstractions. Otherwise, add two two would not reduce to four using the encodings (1) which would disappoint students. Because free variables and reduction under abstraction are absent in functional ....

....reduce to weak normal forms only. In particular, call by value reduces to weak normal form, and call by name reduces to weak head normal form. 4 Lazy Functional Programming Languages Under lazy evaluation, a variable bound term is evaluated at most once, regardless how often the variable is used [9]. This evaluation mechanism may be called call by need, or call by name with sharing of argument evaluation. Lazy languages also permit the creation of cyclic terms, or cycles in the heap, by de nitions such as this, which creates a nite (cyclic) representation of an in nite list of 1 s: val ....

[Article contains additional citation context not shown here]

Peyton Jones, S.L., \The Implementation of Functional Programming Languages", Prentice-Hall 1987.


Data-parallelism versus Functional programming: the contribution.. - Violard (1995)   (Correct)

....data fields are interpreted as functions and sequences of elements can be interpreted as lists, Pei programs, such as the previous one, can be interpreted as functional programs associated with graph reduction. In order to express such functional solutions, we introduce a Miranda like notation [9]. The notation for function application is only a juxtaposition, as in f x. Function application is left associative, so f x y = f x) y. This assumes the currying of any function of two or more arguments. A list is written in square brackets: is the empty list, and [a,b,c,d] contains four ....

S.L. Peyton Jones. The implementation of Functional Programming Languages. Prentice-Hall, c.a.r. hoare edition, 87.


Calculation Carrying Programs - Hu, Takeichi (1999)   (Correct)

....naturally as expressed as above. Rather one has to reinvent an algorithm to implement the law by induction on the syntax tree of programs. To remedy this situation, we introduce explicit matching to our language. Recall that pattern matching is a well appreciated concept of functional programming [Pey88]. It contributes to concise function definitions by implicitly decomposing data type values. For example, the following defines length, a function to compute the length of a list, according to two list patterns; an empty list [ and a list whose head elementisa and the rest list is x. length [ ....

....= x:e x isElem fv e False Here, an expression is said to be a context if it is a function with its bound variable appearing in the body as holes. Note that matching two expression terms may give many solutions, which is different from the pattern matching in functional languages [Pey88]. 3.3 Semantics The semantics for the core language is quite similar to that of general functional languages except for the following two points. ffl Our expression evaluates to a list of values rather than a single one, because our core language allows higher order pattern matching which may ....

[Article contains additional citation context not shown here]

S.L. Peyton Jones. The implementation of functional programming languages. Prentice-Hall, 1988.


The Systematic Construction of a One-Combinator Basis - Fokker (1989)   (Correct)

....l ns. Fixed ons ar non italic. Application socits the left, so ABe means (AB) Aleructions ranse , far a poible, so I= AB incaris I= AB) Multiple aidtractions are abbrevial, so l=I .A means lz.ll .A. Combinaiors are of . at importance for the implementaiion of functioal pro, ramming languages ( [3]) Functional prosrams can be transluigi to an appiicative cbination of combina rs, thus removing the need for l abstract ion. A set of combinatrs from which all closed l terms (modulo , and conveion) can be construcd wins application is called a b. Curry [2] Theorem 1. K, I is a basis. ....

Peyton Jones, S.L.: The implementation of functional programming languages. Prentice-Hall, 1987.


The Intensional Implementation Technique for Chain.. - Rondogiannis.. (1998)   (Correct)

....using tagged, demand driven evaluation (also called eduction [FW87, DW90] Of course, the technique need not be restricted to intensional functional languages. It can also be applied on more mainstream functional languages, giving a promising alternative to the reduction based implementations [Jon87]. It is therefore natural to ask whether a similar intensional logic based implementation technique exists for logic programming languages. The question was first examined by Rolston and Faustini (see for example [RF93] who considered the transformation of Prolog programs into intensional ones ....

S. L. Peyton Jones. The Implementation of Functional Programming Languages. PrenticeHall, 1987.


Computational Interpretations of Linear Logic - Abramsky (1993)   (225 citations)  (Correct)

.... correspondence in the case of Intuitionistic Logic is that the formalism on the computational side is immediately recognisable as an attractive programming paradigm, which has already been extensively developed and enthusiastically advocated by a significant community of software practitioners [Tur90, BW88, FH88, PJ87]. What has been lacking to date from the development of Linear Logic is a comparably attractive computational interpretation. Such an interpretation would have two main ingredients: ffl An interpretation of proofs as programs, i.e. well formed expressions in some programming notation. ffl An ....

....way on a list structured memory, creates a copy of the pointer at the top of the stack, thus implementing the copying of the type by sharing. With a little additional work, we can ensure that the standard function type A ) B = A Gammaffi B is implemented by the standard call by need technique [PJ87]. We shall briefly describe how this can be done. Firstly, we introduce a new instruction upd, and a new form of value ocv(v) representing the consolidation of a value into a closure. The compilation of t is changed by replacing ret by upd. The transition for read is replaced by the ....

S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


Algebraic Languages For XML Databases - Chinwala, Miller   (Correct)

....data models [26, 27] which extensions complex object models with notions object identity, inheritance and methods. Unlike NF 2 algebras, common operators emerged, although that the general approach manipulation complex objects evolved from 2 algebras well Functional Programming Languages [15]. Functional programming concepts were needed order perform restructuring operations complex objects. relational model require sophisticated restructuring operations since, relational model, restructuring limited adding or deleting fields tuples. complex object models, restructuring can defined a ....

S.L. Peyton, Implementation Functional Programming Languages. Prentice- Hall,


Fundamentals of Context-Sensitive Rewriting - Lucas (1995)   (3 citations)  (Correct)

.... of the IS as rewrite rules and we attach a replacement map according to the existing contextual inference rules [f ] Now, if we want to define an abstract machine that computes the transition relation of such an IS we can modify a standard rewriting machine (such as the graph reduction machine [10]) to deal with the restrictions imposed by the replacement condition. Roughly speaking, in order to execute a program with respect to a set of rewrite rules, the of a rewriting machine must follows the following algorithm (until a normal form is reached) 10] 1. selecting the next redex to be ....

....(such as the graph reduction machine [10] to deal with the restrictions imposed by the replacement condition. Roughly speaking, in order to execute a program with respect to a set of rewrite rules, the of a rewriting machine must follows the following algorithm (until a normal form is reached) [10]: 1. selecting the next redex to be reduced and 2. reducing it. To accomodate this to a context sensitive rewriting system we must to take into account the replacement condition in the first step. Let us consider the calculus. A term : is represented as a tree by considering each as an unary ....

S. L. Peyton-Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


Making a Productive Use of Failure to Generate Witnesses.. - Dennis, Bundy, Green (2000)   (Correct)

....[2] and use his notion of applicative bisimulation to build up an equational theory. 2 We use ) to indicate implication. 4 Witnesses for Coinduction In Abramsky s lazy calculus the meaning of a term is its weak head normal form (WHNF) De nition 3. Weak Head Normal Form) Adapted from [27]) A term M is a weak head normal form(WHNF) if M is of the form x:M 0 or xM 1 Mm ; n; m 0. WHNFs are often referred to as values and this convention is adopted here. The calculus also contains two relations, big step evaluation and small step reduction. Big step evaluation, ....

S. L. Peyton Jones. The Implementation of Functional Programming Languages, PrenticeHall, 1987.


CPS Translations and Applications: The Cube and Beyond - Barthe (1996)   (5 citations)  (Correct)

....paper. 1.1. Intermediate languages for compiling CPS or languages with properties similar to CPS (such as A normal forms [25] or monadic normal forms [39] we refer to these as CPS based languages) are often used as intermediate languages when compiling and partial evaluating functional languages [1, 21, 38, 40, 43, 50, 60, 66]. These applications take advantage of the fact that, in CPS, all intermediate values are named and that contexts are represented explicitly. For example, intermediate value naming is used to aid register allocation in compiling (roughly, each name corresponds to a register) and to prevent ....

S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice Hall International. 1987.


Comparing Proofs about I/O in Three Programming Paradigms - Butterfield, Strong (2001)   (Correct)

..... 62 10.1.4 Lemma H.5 . 63 1 Introduction An often cited advantage of functional programming languages is that they are supposed to be easier to reason about than imperative languages [BW88, p1] PJ87, p1] Bd87, p23] BJLM91, p17] Hen87, pp6 7] Dav92, p5] with the property of referential transparency getting a prominent mention and the notion of side e#ect being deprecated all round. For a long time, a major disadvantage of functional programming languages was their inability to adequately ....

S.L. Peyton-Jones. The Implementation of Functional Programming Languages. Series in Computer Science. Prentice Hall International, London, 1987.


A Structural Approach to Reversible Computation - Abramsky (2001)   (Correct)

.... as integers, booleans, pairs, lists, trees, and general inductive types [22] and control structures including recursion, higher order functions, and continuations [33] The calculus can be compiled into combinators, and in fact this has been extensively studied as an implementation technique [31]. Although combinatory weak reduction does not capture all of reduction, it suces to capture computation over concrete data types such as integers, lists etc. as shown e.g. by Theorem 3.1. By our results in the previous section, a combinator program M can be compiled in a syntax directed ....

S. L. Peyton Jones. The implementation of functional programming languages. Prentice Hall 1987.


A Model for Comparing the Space Usage of Lazy Evaluators - Bakewell, Runciman (2000)   (4 citations)  (Correct)

....(L Gamma R) 2 A B and there are variable substitutions ; oe and hole substitutions OE; s.t. G j G 0 (match OE L) G Gamma A G 0 (match OE R) then H j H 0 (match oe L) H Gamma B H 0 (match oe R)2 Example 9. Implementations can use indirections to avoid copying expressions [19]. Evaluator h copies values in its (Update) rule (Figure 5) Figure 10 defines i , a variant of h that uses an indirection node instead. But can we be sure that such indirections cannot form chains, causing a space leak To prove i h we define a space equivalence between h and i graphs and show it ....

....directly implementing graph reduction or SKI reduction towards a compiled code style better suited to modern computer architectures. Some machine designs have been found to be leakier than expected. The literature documents failure to perform black holing [13; 20] and certain uses of indirections [19] as sources of space faults, examples that we have dealt with in this paper. Careless implementation of environment based machines causes another space fault mended by environment trimming or stack stubbing [19] Improved garbage collection can eliminate leaks. Type based [16] ....

[Article contains additional citation context not shown here]

S. L. Peyton-Jones. The Implementation of Functional Programming Languages. Prentice-Hall International, 1987.


A Complete Proof System for Nested Term Graphs - Blom (1995)   (1 citation)  (Correct)

.... terms that unwind to the same tree, presented as a complete proof system. This paper gives a similar characterization for Nested Term Graphs. The semantics of tree unwinding is presented via bisimulations. 1 Introduction Sharing and cycles are essential features in a program development system [10]. In fact, they occur at the source level, after parsing, in the intermediate program representation and during program execution. However, traditional computational models such as term rewriting systems [8] and calculus [3] do not allow to reason about them directly. A natural way to capture ....

S. L. Peyton Jones. The implementation of Functional Programming Languages. Prentice-Hall International, Englewood Cliffs, N.J., 1987.


Abstract Machines for Programming Language Implementations - Diehl, Hartel, Sestoft (2000)   (6 citations)  (Correct)

....machine more efficient, Turner added further instructions, each with a functionality that is provably equivalent to a number of S and K combinators. The G machine (1984) was designed by Augustsson and Johnsson for lazy (call by need) evaluation of functional programs in supercombinator form [10,68,104]. Instead of interpreting supercombinators as rewrite rules, they were compiled into sequential code with special instructions for graph manipulation. The G machine is the basis of the Lazy ML [11] and HBC Haskell [13] implementations. The Krivine machine (1985) is a simple abstract machine for ....

S.L. Peyton Jones, The Implementation of Functional Programming Languages, Prentice-Hall, Englewood Cliffs, NJ, 1987.


Functional Beans - Bois, Costa (2000)   (Correct)

....software component model written in Java [3] Functional languages are usually implemented using graph reduction, by compiling them to a graph reduction machine language. So, our rst step to implement functional components in Java was to implement a graph reduction machine, the G Machine [5], on top of the JVM (Java Virtual Machine) Having a graph reduction machine implemented on top of the JVM, we can easily translate any pure functional program to Java byte code. The approach we used to compile a functional program to a JavaBeans component is to rst compile the functions de ned ....

....This instruction makes the G Machine support lazy evaluation of graphs. Next, the GM.pop(1) instruction pops the the rst element of the stack (pop 1) because it is already pointed from the root node. More about the G Machine and the speci cation of the G Machine instructions can be found in [5]. The GM class has a reduce(Nsuperc main) method that begins the evaluation of the functional program beginning with the main function: static String reduce (Nsuperc main) f Node thunk; GM.pushglobal(main) main.code( thunk = Node) GM.head( while ( thunk instanceof Nbasic) f ....

JONES, S.P. \Implementation of Functional Programming Languages". Prentice Hall, 1987.


Formal Methods in System Design, 20, 159--186, 2002 c - Verification Of Out-Of-Order   (Correct)

No context found.

S.L.P. Jones, The Implementation of Functional Programming Languages, Prentice-Hall, Englewood Cliffs, NJ, 1987.


A Functional Shell That Operates on Typed and Compiled.. - Plasmeijer, van Weelden (2005)   (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


Implementing Mobile Haskell - Bois, Trinder, Loidl (2004)   (Correct)

No context found.

S.L. Peyton Jones. Implementation of Functional Programming Languages. A Tutorial. Prentice Hall, 1992.


Dependently Typed Pattern Matching - Hongwei Xi Computer (2003)   (1 citation)  (Correct)

No context found.

Peyton Jones, S. L. (1987). The Implementation of Functional Programming Languages. Prentice-Hall International, London.


From Böhm's Theorem to Observational Equivalences: an .. - Dezani-Ciancaglini.. (2001)   (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice Hall, 1987.


The Functional Side of Logic Programming - Massimo Marchiori Department (1995)   (6 citations)  (Correct)

No context found.

S.L. Peyton Jones. The Implementation of Functional Programming Languages. International Series in Computer Science. Prentice-Hall, 1987.


Dependently Typed Pattern Matching - Xi (2003)   (1 citation)  (Correct)

No context found.

Peyton Jones, S. L. (1987). The Implementation of Functional Programming Languages. London: Prentice-Hall International.


HAL: A High-level Actor Language and Its Distributed - Implementation Chris Houck   (Correct)

No context found.

S. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


Declarative Languages in Education - Glaser, Hartel, Leuschel, Martin (2000)   (Correct)

No context found.

S. L. Peyton Jones. The implementation of functional programming languages. Prentice Hall, Englewood Cli s, New Jersey, 1987.


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

No context found.

S. P. Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


A Parallel Virtual Machine for Bulk Synchronous Parallel ML - Gava, Loulergue (2003)   (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. PrenticeHall, 1987.


Parallel Juxtaposition for Bulk Synchronous Parallel ML - Loulergue (2002)   (1 citation)  (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. PrenticeHall, 1987.


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

No context found.

S. P. Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


The Programming Language Opal - Th Corrected Edition   (Correct)

No context found.

Peyton Jones, S.L.: \The Implementation of Functional Programming Languages";


Compositionality in Functional Bulk Synchronous Parallelism - Loulergue (2002)   (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. PrenticeHall, 1987.


The AMEN architecture. - Peter Hancock Abandoned   (Correct)

No context found.

S.L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall International, 1987.


Demonstrating Lambda Calculus Reduction - Peter Sestoft Department (2002)   (1 citation)  (Correct)

No context found.

Peyton Jones, S.L.: The Implementation of Functional Programming Languages. Prentice-Hall (1987).


Optimising the Memory Management of Higher-Order Functional.. - Mohnen (1997)   (2 citations)  (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


Decidability Properties Of Recursive Types - Cardone, Coppo (2003)   (Correct)

No context found.

Jones, S.: The Implementation of Functional Programming Languages. Prentice Hall (1987)


Multi-Architecture Parallel Programming Using GpH, a Functional.. - Aswad (2002)   (Correct)

No context found.

S. Peyton Jones. The Implementation of Functional Programming Language . Prentice /Hall International , 1986.


Thunk Lifting: reducing the Heap Usage in an Implementation.. - Haydarlou, Hartel (1995)   (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. International Series in Computer Science. Prentice-Hall, Englewood Cliffs, New Jersey, 1987.


Hosting Object-Oriented Programming in Totally Functional .. - Bailes, Kemp, Seefried   (Correct)

No context found.

Peyton Jones, S., The Implementation of Functional Programming Languages, Prentice-Hall International, Hemel Hempstead (1987).


A Parallel Virtual Machine for Bulk Synchronous Parallel ML - Gava, Loulergue (2003)   (Correct)

No context found.

S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


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

No context found.

S. P. Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


HAL: A High-level Actor Language and Its Distributed - Implementation Chris Houck   (Correct)

No context found.

S. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


Analysis and Efficient Implementation of Functional Programs - Sestoft (1991)   (43 citations)  (Correct)

No context found.

S.L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


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

No context found.

S. P. Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.


A Run-time Algorithm for Managing the Granularity of.. - Aharoni, Feitelson.. (1992)   (3 citations)  (Correct)

No context found.

Peyton Jones S. L. 1987. The Implementation of Functional Programming Languages. Prentice-Hall. 19


Operational Machine Specification in a Functional Programming.. - Koopman (1995)   (3 citations)  (Correct)

No context found.

S. L. Peyton Jones, The Implementation of Functional Programming Languages, Englewood Cliffs NY, 1987. ISBN 0-13-453325-9, Prentice-Hall.


Experiences of Parallelising Finite-element Problems.. - Grant, Sharp.. (1995)   (1 citation)  (Correct)

No context found.

S. L. Peyton Jones, The Implementation of Functional Programming Languages, Prentice Hall, 1987.


Compilation of Functional Languages Using Flow Graph Analysis - Hartel, Glaser, Wild (1994)   (3 citations)  (Correct)

No context found.

S. L. Peyton Jones, The Implementation of Functional Programming Languages, Prentice Hall, Englewood Cliffs, New Jersey, 1987.

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