65 citations found. Retrieving documents...
P. Wadler, How to Replace a Failure by a List of Successes. In Jean-Pierre Jouannaud, editor, FPCA, volume 201, pages 113--128, 1985.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents  Next 50

Termination Proofs for a Lazy Functional Language by Abstract.. - Panitz (1996)   (Correct)

....one for distributeodd and one for distributeeven. These ordering propositions are quite similar. The ordering tableau for distributeeven is given in figure A.11. A. 2 Higher Order Functions We will give termination proofs for higher order combinator parsers as they are presented e.g. in [Wad85, FL89]. This example is a typical program using the higher order feature. We will assume that there is a basic type token with an equality function. The first parser function we need, is a function which checks if the token list starts with a certain token. The next two functions do not involve any ....

Phil Wadler. How to replace failure by a list of successes. In Functional Programming Languages and Computer Architecture, number 201 in Lecture Notes in Computer Science, pages 113--128. Springer, 1985.


Towards Language-Agnostic Mobile Code - Stork, Housel, Haldar, Dalton.. (2001)   (Correct)

....Outside the realm of object oriented programming, the functional language community has developed techniques for the related problem of composing semantic functions on ASTs. They use higher order functions (parser combinators) to implement grammar constructs such as sequencing and choice [4,31,14]. In this setting the idea of weaving visitors like yarns is equivalent to fusing computations (i.e. folds) on the AST, thereby alleviating the need for intermediate data structures (deforestation) The ASF SDF system [30] allows the syntax and semantics of programming languages to be speci ed ....

Wadler, P. L., How to replace failure by a list of successes, in: J.-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, Lecture Notes in Computer Science 201 (1985), pp. 113-128.


Towards Parallel Mercury - Conway (2002)   (Correct)

....creating an engine to execute the nondeterministic goal, and then making repeated calls to the engine to get the next solution. The resulting system is similar to Wadler s technique in lazy functional programming of simulating nondeterminism by returning not a single answer but a list of solutions [109]. Of course, the main di#erence is that the functional version has a very carefully thought out semantics, where the multi engine approach does not. In Mercury, it is possible to replicate this kind of functionality with a one solution at a time version of unsorted solutions 2, which is committed ....

P. L. Wadler. How to replace failure by a list of successes. In J.-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, pages 113--128. SpringerVerlag, Berlin, DE, 1985. Lecture Notes in Computer Science 201Proceedings of. Conference at Nancy.


A Multilingual Natural-Language Interface to Regular Expressions - Ranta (1998)   (1 citation)  (Correct)

.... a , interpretation: the regular set [ a , aa , a lazy list of Haskell) compilation: the automaton ( sb a ] 0] 0] 0, 0, sb a , 0) written in the notation of Haskell) Search procedures can be formalized as functions yielding lists as values, following a technique explained in [15]. For instance, the result of parsing is a list of syntax trees, which can be empty or have several distinct elements. Parsing the concrete regular expression a gives, in addition to the syntax tree just mentioned, the tree RREkleenestar (RREsymbol (RSEonesymb a ) that represents a relation ....

Philip Wadler, 1985. "How to replace failure by a list of successes". In Proceedings of Conference on Functional Programming Languages and Computer Architecture, pp. 113--128, Lecture Notes in Computer Science 201. Springer, Heidelberg.


Real-time Reactive Programming for Embedded Controllers - Kieburtz (2001)   (2 citations)  (Correct)

....events to enter sooner than does the con guration that subsumes it. The lazy evaluation of Haskell limits the amountofcomputation necessary to nd a feasible schedule. The algorithm simulates backtracking by producing a list of the feasible schedules that can be discovered from eachchoice point [11]. These lists are, of course, evaluated lazily, and often only the rst element is demanded. The strategy of saving both the feasible and infeasible con gurations that have been encountered in elaborating a scheduling tree e ectively gives the algorithm a dynamic programming behavior rather than ....

Philip Wadler. How to replace failure by a list of successes. In 2'nd International Conferenceon Functional Programming Languages and Computer Architecture,Nancy,France, September 1985. Springer-Verlag.


Real-time Reactive Programming for Embedded Controllers - Kieburtz (2001)   (2 citations)  (Correct)

....to enter sooner than does the con guration that subsumes it. The lazy evaluation of Haskell limits the amount of computation necessary to nd a feasible schedule. The algorithm simulates backtracking by producing a list of the feasible schedules that can be discovered from each choice point [11]. These lists are, of course, evaluated lazily, and often only the rst element is demanded. The strategy of saving both the feasible and infeasible con gurations that have been encountered in elaborating a scheduling tree e ectively gives the algorithm a dynamic programming behavior rather than ....

Philip Wadler. How to replace failure by a list of successes. In 2'nd International Conference on Functional Programming Languages and Computer Architecture, Nancy, France, September 1985. Springer-Verlag.


Combinators for Breadth-First Search - Spivey   (Correct)

.... University Press 1 FUNCT I ONAL PEARLS Combinators for Breadth First Search MICHAEL SPIVEY Oxford University Computing Laboratory Wolfson Building, Parks Road, Oxford OX1 3QD 1 Introduction Every functional programmer knows the technique of replacing failure by a list of successes (Wadler, 1985), but wise programmers are aware also of the possibility that the list will be empty or (worse) divergent. In fact, the lists of successes technique is equivalent to the incomplete depth rst search strategy used in Prolog. At heart, the idea is quite simple: whenever we might want to use a ....

Wadler, P. L. 1985. How to replace failure by a list of successes. In J.-P. Jouannaud (editor), Functional Programming Languages and Computer Architecture, Lecture Notes in Computer Science, 201, pp. 113-128. Springer-Verlag.


A Gentle Introduction to Haskell 98 - Hudak, Peterson, Fasel (1999)   (84 citations)  (Correct)

....favorite sorting algorithm: quicksort [ quicksort (x:xs) quicksort [y y xs, y x ] x] quicksort [y y xs, y =x] To further support the use of lists, Haskell has special syntax for arithmetic sequences, which are best explained by a series of examples: 1. 10] [1,2,3,4,5,6,7,8,9,10] [1,3. 10] 1,3,5,7,9] 1,3. 1,3,5,7,9, infinite sequence) More will be said about arithmetic sequences in Section 8.2, and infinite lists in Section 3.4. 2.4.2 Strings As another example of syntactic sugar for built in types, we note that the literal string hello is actually ....

....[ quicksort (x:xs) quicksort [y y xs, y x ] x] quicksort [y y xs, y =x] To further support the use of lists, Haskell has special syntax for arithmetic sequences, which are best explained by a series of examples: 1. 10] 1,2,3,4,5,6,7,8,9,10] 1,3. 10] [1,3,5,7,9] [1,3. 1,3,5,7,9, infinite sequence) More will be said about arithmetic sequences in Section 8.2, and infinite lists in Section 3.4. 2.4.2 Strings As another example of syntactic sugar for built in types, we note that the literal string hello is actually shorthand for the list of ....

[Article contains additional citation context not shown here]

P. Wadler. How to replace failure by a list of successes. In Proceedings of Conference on Functional Programming Languages and Computer Architecture, LNCS Vol. 201, pages 113-- 128. Springer Verlag, 1985.


Controlling Search in Declarative Programs - Hanus, Steiner (1998)   (3 citations)  (Correct)

....the use of list comprehensions to deal with search problems. List comprehensions allow the implementation 13 of many generate and test programs, since logic programs with a strict data ow ( well moded programs ) can be translated into functional programs by the use of list comprehensions [17]. On the other hand, list comprehensions are much more restricted than our search operators, since purely functional programs do not allow the use of partially instantiated structures, and list comprehensions xes a particular search strategy (diagonalization of the generators) so that other ....

P. Wadler. How to Replace Failure by a List of Successes. In Functional Programming and Computer Architecture. Springer LNCS 201, 1985.


Presupposition Accommodation in Update Semantics - Hulstijn (1995)   (Correct)

....over the accommodation process. In a programming language like Prolog such a backtracking process is easily expressed. In an update formalism like this, it is more difficult to express. One way to express it would be a list of all results from the different paths along choice points. Wadler [51]) This brings us close to Van der Sandt s nondeterministic approach: the accommodation strategy specifies only the correct interpretations. Among the correct interpretations there is some preference for global accommodation. That preference can be overruled. In specifying the choice points we ....

Wadler, P. How to replace failure by a list of successes, a method for exception handling, backtracking and pattern matching in lazy functional languages. In 2nd Functional Programming Languages and Computer Architecture, LNCS 201, J. (ed), Ed. Springer-Verlag, 1985.


LATOS - A Lightweight Animation Tool for Operational Semantics - Hartel (1997)   (3 citations)  (Correct)

....The new premise would then be of the form E b id True. This will be elaborated in Section 4. Miranda output The disadvantage of using a functional language to execute semantic specifications is the lack of direct support for working with relations. However, the list ofsuccesses method [30] can be used to simulate a relation. When given a relation R : A B, this method creates a function F as follows: F : A fBg; F a 0 = fb j ha; bi R a = a 0 g; If a relation is deterministic, the corresponding function either delivers a singleton set to represent success, or an empty set ....

P. L. Wadler. How to replace failure by a list of successes, a method for exception handling, backtracking, and pattern matching in lazy functional languages. In J.-P. Jouannaud, editor, 2nd Functional programming languages and computer architecture, LNCS 201, pages 113--128, Nancy, France, Sep 1985. Springer-Verlag, Berlin.


Type Specialisation of a Subset of Haskell - Sjoers (1997)   (Correct)

....solving. A leaf which is a failure forces backtracking. Failing nodes can only be leaves in the tree as there is no point in continuing traversing the sub tree of such a node. As an example we can draw the tree representing the computation A (B C) D E) We use the same notation as is used in [Wad85]. denotes alternation and denotes sequencing. Let D be a failing sub computation while the others are succeeding. The tree is shown in figure 10. A failing node is drawn as a square while a succeeding is drawn as a circle. There are two solutions to this problem. They are represented by the ....

....superscripts are the pre order numberings and the subscripts the depths of the nodes. We will refer to this two numberings as the tree counter respectively the path counter. 3.3. 3 Implementing Backtracking and Path Counter To represent backtracking we have adopted the principles described in [Wad85] where each step of a computation is represented by a list of solutions. The list corresponding to the example above is [ABE, ACE] We use a monad to implement our mechanism. The features backtracking and path counter are now easy to define. It is well known from literature how to construct such ....

P. Wadler. How to Replace Failure by a List of Successes. In Proceedings 1985 Conference on Functional Programming Languages and Computer Architecture, pages 113--128, Nancy, France, 1985.


Curry: A Truly Functional Logic Language - Hanus, Kuchen, Moreno-Navarro (1995)   (41 citations)  (Correct)

....the search space, like the cut operator, can be avoided in functional logic languages. However, there is no obvious way to combine the search facilities of logic programming with efficient evaluation principles of functional programming. Functional approaches (i.e. lazy) lists of successes [39]) require a directed data flow and do not allow partially instantiated data structures. Approaches which allow an arbitrary data flow have a tradeoff between completeness and efficiency (see discussion below on residuation and narrowing) As a consequence, quite different methods to integrate ....

P. Wadler. How to replace failure by a list of successes. In Functional Programming and Computer Architecture. Springer LNCS 201, 1985.


First Class Patterns - Tullsen (2000)   (5 citations)  (Correct)

....matching because the pattern combinators are instantiated to the Maybe monad, but when we use ( we get backtracking because the pattern combinators are instantiated to the list monad. This requires lazy lists for e ciency. The method of using lazy lists for backtracking is explained in Wadler [Wad85] and is also used in combinator parsers [HM96] 6 Extension III: Value Constructors To de ne the c # equivalents for various c pseudo constructors is often tedious: for example, the list1 # , list2 # , list3 # from above. If c is an instance of the Eq class, c # can simply be a ....

P. L. Wadler. How to replace failure by a list of successes. In Jean-Pierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 113128. Springer Verlag, September 1985.


Demand-driven Search in Functional Logic Programs - Hanus, Rety (1998)   (1 citation)  (Correct)

.... between them) research (each field has its own community, conferences, and journals, and sometimes similar solutions are developed twice) and applications (each field has its own application areas and some e#ort has been done to show that one paradigm can cover applications of the other paradigm [25] instead of showing the advantages of declarative programming in various application fields, which might be also a reason for the quite limited influence of declarative programming to real world computing) Each paradigm has its advantages (functional programming: nested expressions, e#cient ....

.... in this naive form are often highly ine#cient since all candidate solutions are completely generated by backtracking before each of them is tested (the above program has a complexity of O(n ) for an input list of length n) The techniques to implement backtracking in a lazy functional language [25] are not very helpful to avoid the complete exploration of the search space. Backtracking can be programmed in a functional language by implementing the non deterministic generator as a function which returns the list of all candidate solutions and the tester as a filter on this list. For ....

P. Wadler. How to Replace Failure by a List of Successes. In Functional Programming and Computer Architecture, pp. 113--128. Springer LNCS 201, 1985.


Compiling Haskell to Java - Tullsen (1996)   (Correct)

....STG output from ghc (readStgProgram) translates from STG to Java (stgToJava) and outputs the Java code (showJava) stgToJava : StgBinding] Java compile : String String compile = showJava . stgToJava . readStgProgram The parser, readStgProgram is built using a combinator parser [18] (starting from the parsing combinators de ned by Peyton Jones and Lester in [13] Being able to modify the output of ghc made it easy to ensure the language was LL. The compiler outputs Java source code which is then compiled with the Java compiler. At run time this is loaded with the run time ....

P. L. Wadler. How to replace failure by a list of successes. In Jean-Pierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 113128. Springer Verlag, September 1985.


Embedding PROLOG in HASKELL - Spivey, Seres (1999)   (3 citations)  (Correct)

....takes an answer , representing the state of knowledge about the values of variables at the time the predicate is solved, and produces a lazy stream of answers, each corresponding to a solution of the predicate that is consistent with the input. This approach is similar to that taken by Wadler [22]. An unsatisfiable query results in an empty stream, and a query with infinitely many answers results in an infinite stream. 1 type Predicate = Answer Gamma Stream Answer : An answer is (in principle) just a substitution, but we augment the substitution with a counter that tracks the number of ....

P. Wadler. How to replace failure by a list of successes. In 2'nd International Conference on Functional Programming Languages and Computer Architecture, Nancy, France, September 1985. Springer-Verlag.


Abstraction and Performance from Explicit Monadic.. - Sobel, Hilsdale, Dybvig, ..   (Correct)

....theory more closely. We then explore the efficiency improvements such a foundation allows us. Finally, we point toward how the parsing example we use may be generalized. Most of the presentation in the following section is not new. Using monads for parsing has been discussed in detail by Wadler [14], Hutton [5] and Meijer [6, 7] and Bird [1] In a change from these presentations, however, the programs in this paper are written in the strict language Scheme and include uses of the recently standardized syntactic extension mechanism (macros) We paraphrase the material from these other texts ....

Philip Wadler. How to replace failure by a list of successes. In Second International Conference on Functional Programming Languages and Computer Architecture, Nancy, France, September 1985. Springer-Verlag.


Monadic Parsing in Haskell - Hutton, Meijer (1993)   (19 citations)  (Correct)

....of Nottingham Erik Meijer University of Utrecht 1 Introduction This paper is a tutorial on defining recursive descent parsers in Haskell. In the spirit of one stop shopping , the paper combines material from three areas into a single source. The three areas are functional parsers (Burge, 1975; Wadler, 1985; Hutton, 1992; Fokker, 1995) the use of monads to structure functional programs (Wadler, 1990; Wadler, 1992a; Wadler, 1992b) and the use of special syntax for monadic programs in Haskell (Jones, 1995; Peterson et al. 1996) More specifically, the paper shows how to define monadic parsers ....

Wadler, Philip. (1985). How to replace failure by a list of successes. Proc. conference on functional programming and computer architecture. Springer--Verlag.


The Algebra of Searching - Spivey, Seres (2000)   (Correct)

....this is the main advantage of our shallow embedding of Prolog in lazy functional programming over a deep embedding , i.e. an interpreter that treats logic programs as syntactic objects. 1 2 Depth rst search The use of lists of successes to model backtracking search was suggested by Wadler [5] and has become part of the folklore of functional programming. As a reminder, a relation that takes an argument of type and may return several results of type or none is represented by a function of type Stream , where Stream is the type of lazy streams over . 1 Following ....

P. L. Wadler, `How to replace failure by a list of successes', in Functional Programming Languages and Computer Architecture, (J.-P. Jouannaud, ed.), LNCS 201, Springer-Verlag, 1985. 10


Monadic Compositional Parsing with Context Using Maltese as a Case .. - Pace (2004)   (Correct)

No context found.

P. Wadler, How to Replace a Failure by a List of Successes. In Jean-Pierre Jouannaud, editor, FPCA, volume 201, pages 113--128, 1985.


An exercise in Transformational Programming: Backtracking and.. - Fokkinga (2004)   (1 citation)  (Correct)

No context found.

P. Wadler. How to replace failure by a list of successes. In J.P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of Lect. Notes in Comp. Sc., pages 113--128. Springer Verlag, 1985.


Guarded Attribute Grammars - Frost (1993)   (Correct)

No context found.

P. Wadler, `How to replace failure by a list of successes', in J. P. Jouannaud (ed.) Functional Programming Languages and Computer Architectures, Lecture Notes in Computer Science 201, SpringerVerlag, Heidelberg, 1985 p. 113.


User Manual - Meurig Sage December   (Correct)

No context found.

P Wadler, How to replace failure by a list of successes, Conference on Functional Programming Languages and Computer Architecture, Nancy, France; LNCS 201, Springer-Verlag, Sept 1985.


A Semantics for Imprecise Exceptions - Jones, Reid, Hoare, Marlow.. (1999)   (23 citations)  (Correct)

No context found.

PL Wadler. How to replace failure by a list of successes. In Proc Functional Programming Languages and Computer Architecture, La Jolla. ACM, June 1995.

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