| Daniel P. Friedman and David S. Wise. CONS should not evaluate its arguments. In S. Michaelson and Robin Milner, editors, Third International Colloquium on Automata, Languages, and Programming, pages 257--284. Edinburgh University Press, Edinburgh, Scotland, July 1976. |
....some n 0 can be evaluated using CSR (see [Luc98a] for a formal justification of this claim) 1. 1 Related work The search for complete implementations of eager languages such as Lisp [McC60, McC78] originated the first proposals for the use of syntactic replacement restrictions in programming [FW76, HM76] Since list processing is prominent in the design of Lisp, the authors of these works studied implementations where the list constructor operator cons ( in this paper) did not evaluate its arguments, during certain stages of the computation (lazy cons) As a motivating example, Friedman ....
.... during certain stages of the computation (lazy cons) As a motivating example, Friedman and Wise propose the following Lisp definition for computing (by evaluating (terms 1) an infinite sequence of fractions 1 ; whose partial sums converge to =6 (see page 265 of [FW76] terms n) j (cons (reciprocal (square n) terms (add1 n) Their idea is to violate the data type of LISP 1.0 in such a way that the evaluation (of, e.g. terms 1) does not immediately diverge; it results in a node referencing two suspensions [FW76] Example 2 With the TRS: ....
[Article contains additional citation context not shown here]
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming, pages 257-284, Edinburgh University Press, 1976.
....computations. Lazy languages (e.g. Haskell, Clean) interpret them as strictness annotations to become more eager and efficient. Eager languages (e.g. Lisp, OBJ , CafeOBJ, Maude) use them as replacement restrictions to become more lazy thus (hopefully) avoiding nontermination. For instance, [FW76] studied implementations of Lisp where the list constructor operator (cons) did not evaluate its arguments, during certain stages of the computation. Also, algebraic languages, such as OBJ2 [FGJM85] OBJ3 [GWMFJ00] CafeOBJ [FN97] or Maude [CELM96] admit the explicit specification of strategy ....
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming, pages 257-284, Edinburgh University Press, 1976.
....data driven manner, allowing the user to write programs in VIMVAL which deal with potentially infinite streams. VIM uses suspensions to implement demand driven evaluation of streams. Suspension mechanisms have been used to implement infinite data structures by Henderson [20] Friedman and Wise [16], etc. In VIM. a suspension contains the address of an instruction, consisting of the uid of the activation template of the instruction and its index in the template. When a SELECT instruction tries to access an element which is a suspension. the suspension is replaced by an FC queue containing ....
Friedman, D. P., and D. S. Wise. CONS Should Not Evaluate its Arguments. In Automata, Languages; and Programming, Michaelson and Milner, Eds., unknown, 1976, pp. 257-284.
....computations. Lazy languages (e.g. Haskell, Clean) interpret them as strictness annotations to become more eager and efficient. Eager languages (e.g. Lisp, OBJ , CafeOBJ, Maude) use them as replacement restrictions to become more lazy thus (hopefully) avoiding nontermination. For instance, [FW76] studied implementations of Lisp where the list constructor operator cons did not evaluate its arguments, during certain stages of the computation. Algebraic languages, such as OBJ2 [FGJM85] OBJ3 [GWMFJ00] CafeOBJ [FN97] or Maude [CELM96] admit the specification of local strategies which are ....
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming, pages 257-284, Edinburgh University Press, 1976.
....from language oriented research is discussed. Research reported herein was supported, in part, by the National Science Foundation, under grants numbered MCS 82 03978, DCR 84 05241, and DCR 8521497. daisy, dsi, and limp 2 1. Introduction The article CONS should not Evaluate its Arguments [FrWi76a] was one of several papers to appear in the mid 1970s on the subject of laziness in Lisp like languages. The approach offered by Friedman and Wise was operational. They presented an interpreter, for Pure Lisp in Lisp, in which the elementary operations of Lisp are subverted to make list ....
Daniel P. Friedman and David S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner (Eds.) Automata, Languages and Programming, Edinburgh University Press (Edinburgh, 1976), 257--284.
....extends call by lazy methods by using memoization to avoid the need for repeated evaluation. Friedman and Wise were among the earliest advocates of call by need evaluation, proposing suicidal suspensions which self destructed when they were first evaluated, replacing themselves with their values [9]. 2.4. SINGULAR VS. PLURAL SEMANTICS Clinger made one more distinction: between singular and plural semantics. In the presence of nondeterminacy, there are two possible semantics for normal order argument substitution in function calls. Suppose that we define a nondeterministic primitive ....
....is concerned with constructing data objects whose elements are not evaluated until they are needed. P.J. Landin [16] first originated the idea of a nonstrict data structure; the idea mostly languished until the publication of Friedman and Wise s CONS should not evaluate its arguments in 1976 [9]. The essential benefit of using delayed data structures is simple in concept: it separates the time at which a data structure is defined from the time at which its elements are actually constructed. This is an exceedingly powerful technique: it allows the efficient creation of large or even ....
Friedman, D. P. and Wise, D.S., 1976. CONS should not evaluate its arguments. In Automated Languages and Programming: Third International Colloquium at the University of Edinburgh, S. Michaelson and R. Milner, eds. Edinburgh University Press, pp. 257-284.
....Section 8 (that are onestep strategies) are optimal and can be used to provide optimal infinitary normalizing strategies by using S k H to extend their computational scope. 11 Related work and applications The first proposals for the use of syntactic replacement restrictions in programming [FW76, HM76] originated more than twenty years ago from the search for complete implementations of Lisp [McC60, McC78] Since list processing is prominent in the computational model of Lisp, the authors of these works studied implementations where the list constructor operator cons ( in this paper) ....
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming, pages 257-284, Edinburgh University Press, 1976.
.... [37] must be applied to specifications (see [1] and [58] 4) The infinite size of streams means that traditional methods for the evaluation and representation of data structures for finite objects are not suitable and new strategies must be used to implement and animate STs (see [27] and [14]) In contrast to the existing approaches to stream processing we identified in [60] in our research we intend to develop a general and abstract theory of stream processing that specifically addresses these and other problems associated with current stream processing techniques. This theory is ....
D P Friedman and D S Wise. Cons should not evaluate its arguments. In Proceedings of the 3 rd Colloquium on Automata, Languages and Programming, pages 257--284. Edinburgh Press, 1976.
....the main line of the Lisp family of languages relied on side effects for efficiency reasons. a lazy evaluator that made Wadsworth s call by need evaluation regime [Wad71] available for a purely functional subset of Lisp, providing better means to handle potentially infinite streams (cf. also [FW76] Soon afterwards, Henderson [Hen80] explored the potential of streams and lazy evaluation and described networks of functional processes communicating via potentially infinite streams. In the following years, attempts to give (mostly) functional specifications of operating systems and networks ....
D. P. Friedman and D. S. Wise. CONS should not evaluate its arguments. In Michaelson and Milner, editors, Automata, Languages and Programming. Edinburgh University Press, 1976.
....nite state, model checking. The key idea is that we use lazy data types to model the in nite state space associated with a protocol. A lazy data type is one where data type constructors (e.g. cons for building lists, or node for building trees) build data types without evaluating their arguments [6]; this allows us to represent and compute with in nite data (e.g. streams or in nite trees) generating as much of the data as is needed on demand. We use lazy data types to build a model and to compute with it afterwards. We formalize a protocol and attacker model (a description of the powers of ....
Dan P. Friedman and David S. Wise. Cons should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming, pages 257-284. Edinburgh University Press, 1976.
.... , c) AddTest( w,p] j,f]S, c) if j w c : else : j w, f p] AddTest( w,p] S, c) Note that S(k) occurs on the right hand side, so the program defines the sequence recursively. Furthermore, the structure of the program is a standard one that occurs in lazy functional languages [AW76, FW76], and is often used to manipulate infinite sequences (without having to evaluate them) In our case, the sequences are all bounded by c and thus we simply need to include a test for this as indicated in the body of AddTest which produces the sequence representing p k f k (j Gamma w k ) Hence, ....
....sizes are simply solved by adding more processors, or reusing the same array in multiple passes. In order to do this we prove that the lengths of the buffers in architecture is always bounded. This raises an interesting open question. It is well known that lazy stream functional programs [FW76], correspond almost mechanically to networks of processes communicating through fifo channels [Kah74] these are not realistic because the problem of proving bounds on buffer lengths is undecidable [Wad84] We were successful in proving the bounds for our example by hand, and it would be ....
D. Friedman and D. Wise. CONS should not evaluate its arguments. In ICALP'76, pages 257--284, 1976.
....2 A BRIEF HISTORY OF STREAM PROCESSING 4 In 1975 W Burge (see [50] discussed the use of streams as a method for structured programming and introduced a set of functional stream primitives for this purpose. In 1976 P Henderson and J H Morris (see [100] and D P Friedman and D S Wise (see [78]) published their work on lazy evaluation techniques that are useful for computing with infinite data types of which streams are an example. The work presented in [78] was the first in the research project applicative programming for streams examining the issue of concurrency using stream ....
....of functional stream primitives for this purpose. In 1976 P Henderson and J H Morris (see [100] and D P Friedman and D S Wise (see [78] published their work on lazy evaluation techniques that are useful for computing with infinite data types of which streams are an example. The work presented in [78] was the first in the research project applicative programming for streams examining the issue of concurrency using stream programming. This work is continued in [79] that presents a file system and text editor, and [79] that explores the use of streams in programming problems such as ....
[Article contains additional citation context not shown here]
D P Friedman and D S Wise. Cons should not evaluate its arguments. In Proceedings of the 3 rd Colloquium on Automata, Languages and Programming, pages 257--284. Edinburgh Press, 1976.
....que la s emantique de r eseaux de processus asynchrones et d eterministes, communiquant par des files d attente, pouvait se d ecrire comme des syst emes d equations de suites, tr es voisins des programmes Lucid. Parall element, le concept d evaluation paresseuse emergeait comme un outil pratique [10, 16], permettant d introduire dans les langages de programmation des types de donn ees infinis, comme les suites, et maintenant, des langages fonctionnels modernes, comme Lazy ML ou Haskell permettent d ecrire tr es facilement des programmes a la Lucid ou a la Kahn, en apportant de nombreuse ....
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In Proc. ICALP'76, pages 257--284, 1976.
....SPSs are sometimes referred to as Kahn networks. In 1975 W Burge (see [42] discussed the use of streams as a method for structured programming and introduced a set of functional stream primitives for this purpose. In 1976 P Henderson and J H Morris (see [78] and D P Friedman and D S Wise (see [63]) published their work on lazy evaluation techniques that are useful for computing with infinite data types of which streams are an example. In 1977 G Kahn made another contribution to the field with his joint paper with D MacQueen (see [87] wherein they introduced a language designed to model ....
....of G Kahn has been widely adopted as a semantic approach for functional stream processing. However, other (sometimes related) approaches are also used including greatest fixed points (see [52] and [66] and Aczel s logical theory of constructions (see [2] 57] and [58] In addition, the work of [63] and [78] on lazy evaluation has provided an implementation technique for functional stream processing that has been widely adopted. 5.2.2 Applications. The verification of functionally specified STs has been explored in the literature. In particular, operating systems have been an area of quite ....
D P Friedman and D S Wise. Cons should not evaluate its arguments. In Proceedings of the 3 rd Colloquium on Automata, Languages and Programming, pages 257--284. Edinburgh Press, 1976. REFERENCES 52
....the list element is attempted by a consuming steam function. The force operator must be used to call for evaluation of a list component that may not have been computed yet. Treating all lists as composed of components to be evaluated on demand (the lenient cons ) was suggested by Friedman and Wise[10]. The functional programming language Miranda[3] has embodied this concept of universal lazy evaluation so that use of special operators is not necessary to avoid waste of memory in stream processing. The pair averaging function may be written in Miranda as average pairs ( e1 : e2 : d ) e1 ....
David. P. Friedman and Daniel S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming: Third International Colloquium, pages 257--284. Edinburgh University Press, 1976.
.... extends let with data constructors k n of arbitrary arity n and primitive operators p (of which selectors are a special case) There is one new form of value: k n V 1 : Vn where the components V 1 through Vn must be values otherwise sharing would be lost when copying the compound value [14]. For instance, inl (1 1) is not a legal value, since copying it would also copy the unevaluated term (1 1) Instead, one writes let x = 1 1 in inl x : There are two new reduction rules. Rule ffi V is the usual rewrite rule for primitive operator application. It is defined in terms of a ....
D. P. Friedman and D. S. Wise. Cons should not evaluate its arguments. In Proc. International Conference on Automata, Languages and Programming, 1976.
....what such a restriction can be. We contrast replacement restrictions vs. reduction restrictions. Related work The search for complete implementations of Lisp [McC60, McC78] originated the first proposals for the use of syntactic replacement restrictions in programming, more than twenty years ago [FW76, HM76]. Since list processing is prominent in the computational model of Lisp, the authors of these works studied implementations where the list constructor operator cons did not evaluate its arguments, during certain stages of the computation. Since the operator cons is not binded to any specific ....
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming, pages 257-284, Edinburgh University Press, 1976.
....originated in the procedural world with SNOBOL [Farb64] Type checking in ML is done by inference which automatically computes the most general type of each expression and allows the programmer to omit type assertions from the program. Laziness has become prevalent in modern functional languages [Wads71,Frie76,Hend76]. A revolution in the implementation techniques available for lazy functional languages was begun with a graph reduction technique invented by David Turner [Turn79b] Evaluation involved only a very small number of fixed transformation rules which were represented as higher order functions. These ....
Friedman, D.P and Wise, D.S., CONS Should not Evaluate its Arguments, In Automata, Languages and Programming Eds. Michaelson and Milner, Edinburgh Univ. Press, 1976, pp257-284
....them to as many processors as might be available so they can be added in parallel. Lazy functional languages choose a different possibility of the functional approach, normal order evaluation. particular evaluation order: lazy evaluation. This was first proposed independently by Friedman and Wise[16], Henderson and Morris[18] and O Donnell[21] Briefly, the idea is that the arguments of a function need not be evaluated until they are actually needed for the evaluation of the result of the function. A result of this approach is that computation becomes entirely output driven. Say, for ....
D. P. Friedman and D. S. Wise. CONS should not evaluate its arguments. In Proceedings 3rd International Colloquium on Automata, Languages and Programming, pages 257--284, Edinburgh, 1976. Edinburgh University Press.
....generator can be neatly expressed as an attribute grammar over the G machine code sequence. 1 Introduction Many programming language researchers have long advocated the use of functional languages, in particular lazy ones, for their expressiveness and semantic simplicity see e.g. HM76] Fri76] Tur81] At the same time, researchers in the field of computer architecture are working towards multiprocessor computers that take advantage of the parallelism inherent in such languages. But it may take many years before the envisioned novel architectures become available; and even when they ....
D. P. Friedman. Cons should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, languages and Programming, pages 257-- 284. Edinburgh University Press, 1976.
No context found.
Daniel P. Friedman and David S. Wise. CONS should not evaluate its arguments. In S. Michaelson and Robin Milner, editors, Third International Colloquium on Automata, Languages, and Programming, pages 257--284. Edinburgh University Press, Edinburgh, Scotland, July 1976.
No context found.
D. P. Friedman and D. S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner, editors, Automata, Languages and Programming, pages 257--284. Edinburgh University Press, 1976.
No context found.
Daniel P. Friedman and David S. Wise. CONS should not evaluate its arguments. In S. Michaelson and R. Milner (Eds.) Automata, How Daisy is Lazy 11 Languages and Programming, Edinburgh University Press (Edinburgh, 1976), 257--284.
No context found.
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In ICALP'76, pages 257--284, 1976.
No context found.
Friedman, D.P., and Wise, D.S. "CONS Should Not Evaluate Its Arguments". In Michaelson, S., and Milner, R., eds. Automata, Languages and Programming, Edinburgh U. Press, 1976, 257-284.
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