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


A Needed Narrowing Strategy - Antoy, Echahed, Hanus (1994)   (95 citations)  (Correct)

....between them. In terms of research, each eld has its own community, conferences, and journals, and sometimes similar solutions are developed twice. Each eld also has its own application areas and some e ort has been devoted to show that one paradigm can cover applications of the other paradigm [71] instead of showing the advantages of declarative programming in various application elds. Each paradigm, of course, has its own advantages. Functional programming o ers nested expressions, ecient evaluation by deterministic (often lazy) evaluation, and higher order functions. Logic programming ....

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


Embedding PROLOG in HASKELL - Seres, Spivey (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 [18]. 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 : 1 For clarity, we use the type constructor Stream to denote possibly infinite streams, and List to denote finite lists. ....

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.


Haskell and XML: Generic Combinators or Type-Based Translation? - Wallace, Runciman (1999)   (61 citations)  (Correct)

....is specification of strategies for program optimisation, treated as rewriting over expression trees. The result of applying a strategy is either a single term or failure: non determinism is achieved by backtracking but only the first success is computed, whereas we deal in lists of successes [14]. Their operators for combining strategies include composition, directed choice, and an explicit operator for recursion. They have several operators for specifying transformation of child subterms: some are not so relevant to XML where subtree position and arity are less often fixed than in ....

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


Continuation Passing Combinators for Parsing Precedence Grammars - Hill (1994)   (Correct)

....of input tokens to a list of possible parses, where a parse is a pair consisting of the remnant of the input list and the value constructed by the parser. The value part of a parser might be a parse tree, or a basic value such as a number. The combinators use the list of successes technique [8] to provide backtracking, so can handle ambiguous grammars. Parsers can be combined sequentially: p1 seq p2 denotes a parser which accepts parses from p1 followed by parses from p2 (usually written as juxtaposition in BNF) or by using an alternation: p1 alt p2 denotes a parser which accepts ....

Philip Wadler. How to replace failure by a list of successes. In Lecture Notes in Computer Science 201. Springer-Verlag, 1985.


Machine-Assisted Theorem-Proving for Software Engineering - Martin (1994)   (6 citations)  (Correct)

....is needed in interactive use of the system she describes. No algebraic laws are given. The usefulness of lazy lists to implement backtracking has been known in functional programming circles for some time. Burge [Bur75] discusses such backtracking in the context of top down parsing, and Wadler [Wad85] presents a whole parser toolkit in this style. The parser combinators are very similar to those given here. For example, lit x is a parser combinator which matches a string whose first character is x. Parser combinators return a list of tuples containing the matched portion of their argument ....

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


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

....the type of a function makes it clear whether it can raise an exception; and the type system makes it impossible to forget to handle an exception. The idea of exceptions as values is very old. Wadler s influential paper How to replace failure with a list of successes is an early example [7]. Subsequently it was realised that the exception type constructor, ExVal, forms a monad [4, 6] Rather than having lots of ad hoc pattern matches on OK and Bad, standard monadic machinery such as Haskell s do notation, can hide away much of the plumbing. 2.2 Inadequacies of exceptions as values ....

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


Programming a Language - Aiken, Williams, Wimmers   (Correct)

....and performance has never been a problem. In the current compiler it is estimated that only about 1 of total compilation time is spent evaluating expressions. 6 Related Work and Conclusions Several researchers have considered the problem of adding features to functional languages. Wadler [Wad85] and Spivey [Spi90] are the closest to our approach in spirit. They show how to use lists and abstract data types to realize exceptions in a lazy language. Our work is a natural generalization of these examples. A number of efforts have focussed on adding state to a functional language in a ....

P. Wadler. How to replace failure by a list of successes. In Proceedings of the Second International Conference on Functional Programming Languages and Computer Architecture. Springer Verlag Lecture Notes in Computer Science no. 201, 1985.


Unlimp - Uniqueness as a Leitmotiv for Implementation - Kahrs (1992)   (7 citations)  (Correct)

....means looking for a less natural way. But such an influence on programming style is also present when there is no such principal difference in computational power, because for certain programming styles, strict evaluation is very inefficient. Typical for this are backtracking algorithms, see [20]; one example is the following simplified version (in Haskell) of the pairing algorithm used for Swiss System chess tournaments: type Entry a = a, a] type Pairing a = Entry a,Entry a) pairing : Eq a) Entry a] Pairing a pairing table = if allpairs= then error no pairing else head ....

Philip Wadler. How to replace failure by a list of successes. In Functional Programming Languages and Computer Architecture, pages 113--128, 1985. LNCS 201.


A Higher Order Rewriting Logic for Functional Logic.. - Gonzalez-Moreno.. (1997)   (Correct)

....concise declarative formulation. Experiments based on the permutation sort algorithm ( 13] have shown significant time speedups of findSolution w.r.t. the nave first generate, then test approach. Note that the list of successes approach used for search problems in lazy functional languages ([24]) would compute the list consisting of all the candidate solutions (possibly using a list comprehension) and pass it as a parameter to another function which would filter the actual solutions. In contrast to this, our approach relies on backtracking to compute the candidate solutions one by one. ....

P.Wadler. How to Replace Failure by a List of Successes. Proc. IFIP Int. Conf. on Funct. Progr. Lang. and Computer Architectures, Springer LNCS 201, pp.113-128, 1985.


Functional Pearls - Even Higher-Order Functions for Parsing or.. - Okasaki (1999)   (3 citations)  (Correct)

....three or above We illustrate functions of up to sixth order with examples taken from a combinator parsing library. Combinator parsing is a classic application of functional programming, dating back to at least Burge (1975) Most combinator parsers are based on Wadler s listof successes technique (Wadler, 1985). Hutton popularized the idea in his excellent tutorial Higher Order Functions for Parsing (Hutton, 1992) In spite of the title, however, he considered only functions of up to order three. 2 Parsers as Third Order Functions Using Wadler s list of successes technique, a parser is represented by a ....

Wadler, P. (1985) How to replace failure by a list of successes. Conference on Functional Programming Languages and Computer Architecture pp. 113--128.


A System for Translating Executable VDM Specifications into Lazy .. - Borba, Meira (1997)   (Correct)

....this prototype tool is not robust enough to be used for generating parsers for a language having such a complex syntax as VDM. Also, it seemed impractical and inefficient to develop a parser in a functional language from scratch, even using well known techniques such as those given in Reference [15]. In view of these difficulties, a compromise solution was adopted, following the approach used to implement the parser of the LML compiler. In summary, an imperative parser generator [16] translates VDM concrete syntax into a prefixed version of it, which can be straightforwardly parsed by a ....

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


Benchmarking Implementations of Lazy Functional Languages - Hartel, Langendoen (1993)   (24 citations)  (Correct)

....that labels all four connected pixels into objects. transform 834 [22] list, tuple, data Transformation of 9 programs represented as synchronous process networks into master slave style parallel programs. parstof 1192 [3] list, tuple, data Lexing and parsing based on Wadler s parsing method [23] of a 600 line program. arrays = uses arrays float = uses floating point arithmetic bit = uses logical operators on small bit vectors list = uses lists complex= uses complex arithmetic tuple = uses tuples data = uses algebraic data types Table 4: The benchmark programs with an indication of their ....

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 115--128, Nancy, France, Sep 1985. Springer-Verlag.


Graphical Application and Visualization of Lazy Functional.. - Foubister (1995)   (Correct)

....the reduction of an expression. CHAPTER 6. THE IMPLEMENTATION OF HINT 101 6.2.2 Lexical analysis and parsing Lexical analysis and parsing in hint exploit well known techniques that have frequently been used to demonstrate the suitability of lazy functional languages for such applications (e. g [99, 33, 69]) The implementation uses a Parser type which takes a list of lexical tokens, and returns a triple: whether or not the parse has been successful, maybe a parse tree, and the remaining lexical tokens. 1 data Deft = Deftree Identifier (Expr Identifier) data WhiffDeft = WhiffDeftree Identifier ....

Philip Wadler. How to Replace Failure by a List of Successes. In Jean-Pierre Jouannaud, editor, Functional ProgrammingLanguages and Computer Architecture, pages 113--128, Nancy, France, 1985. Springer-Verlag.


Integration of Functional and Logic Programming - Hanus, Kuchen   (Correct)

.... to infer that there are no solutions no matter how the logic variables are bound, then a whole subspace of the search space can be ignored (namely the subspace providing instantiations of the logic variables) The purely functional approach to searching by (lazily) producing a list of successes [5] will consider all values of this subspace one by one, since an expression in a purely functional language represents only one value (regardless of the evaluation strategy ) Note that a simulation of expressions containing logic variables by abstractions, e.g. a representation of (cons X Y ) by ....

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


Relative Specification and Transformational Reuse of.. - Runciman, Jagger (1990)   (1 citation)  (Correct)

....to express incomplete solutions appropriately using non determinism. However, the incompleteness of a specification may reflect a wish to avoid being over specific, in which case residual non determinism might be transformed algorithmically to obtain a program that enumerates a set of solutions [11]. This shift from non determinacy to sets of solutions is one that others prefer to make earlier in a transformational development [1] On the other hand, a fusion step may fail to produce anything other than (no value expression) clearly indicating inconsistency in the specification. ....

P. Wadler. How to replace failure by a list of successes. In Jean-Pierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, pages 113--128, Springer-Verlag, September 1985.


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

....exception. There are good things about this approach: no extension to the language is necessary; the type of a function makes it clear whether it can raise an exception; and the type system makes it impossible to forget to handle an exception. The idea of exceptions as values is very old [10, 18]. Subsequently it was realised that the exception type constructor, ExVal, forms a monad [6, 9] Rather than having lots of ad hoc pattern matches on OK and Bad, standard monadic machinery such as Haskell s do notation, can hide away much of the plumbing. 2.2 Inadequacies of exceptions as ....

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


Basic Proof Skills of Computer Science Students - Hartel, van Es, Tromp   (Correct)

....emphasis is on the lambda calculus and various abstract machine models. Here equational reasoning and inductive proofs are also used, but to a lesser extent than in part 1. The functional languages and architectures course is accompanied by a laboratory where the students build a combinator parser [18] and a type checker [2, Ch. 7] for a simple functional language. See table 5 for a summary of the details of the course. We found no indication that the study of functional programming as a separate subject has an effect on the acquisition of basic proof skills. Of the participants who took the ....

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.


Efficient Parsing Combinators - Röjemo (1995)   (Correct)

....The input that is held onto only to allow backtracking is dropped by applying a cut combinator. This combinator was introduction in a continuation based implementation of parsing combinators. Introduction One method to implement parsers in functional languages is to use parsing combinators [Bur75, Wad85, Hut92, PW94]. Parsing combinators are higher order functions which create more complex parsers from simpler ones. The behaviour of the parser, i.e. how it handles errors, ambiguous grammars, etc. can easily be changed by changing the behaviour of the parsing combinators. This paper is concerned with parsing ....

....to de ne a new combinator instead of using and seq. ap : Parser a (b c) Parser a b Parser a c p1 ap p2 = p1 into f p2 into x succeed (f x) This combinator is function application, but for parsers. Note that succeed and into are unit and bind respectively in a parser monad [Wad85, Wad90, Wad92]. It is now possible to de ne many in a monadic style, without creating any pairs. The idea is to apply the cons operator ( to its argument as soon as they are parsed. many p = succeed ( ap p ap many p alt succeed [ Before rewriting the whole parser, it is a good idea to de ne a ....

[Article contains additional citation context not shown here]

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


Compositional Logic Programming - McPhee, de Moor (1996)   (7 citations)  (Correct)

....such parsers, the simplicity of their structure, and the ease with which the parsers can be modified. Combinator parsers in functional languages make essential use of compositionality and higherorder programming. Ambiguous grammars are dealt with by appealing to the classic list of successes [Wad85] approach, which encapsulates a form of backtracking. Traditional logic programming languages are, for the most part, unsuitable for a combinatory approach to programming since features like currying and higher order programming are not generally supported. In this example, it is shown how our ....

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 Lecture Notes in Computer Science, pages 113--128. Springer-Verlag, 1985.


Garbage Collection, and Memory Efficiency, in Lazy Functional.. - Röjemo (1995)   (Correct)

....units aggregated over all their subexpressions. Space eOEcient programs One important property with functional languages is that functions are rst class citizens. This fact can be used to develop higher order functions that create other functions. A nice example of this is parsing combinators [Bur75, Wad85, Hut92, PW94]. They make it easy to develop parsers, as the program structure corresponds very closely to the grammar itself, but the memory needed when using these parsers can be surprisingly large. However, it is possible to reduce this memory requirement, without reducing the usefulness of the combinators, ....

....to backtrack, by inserting a cut combinator in the parser, where backtracking cannot give a better alternative than the current one. Dioeerent variants of cut combinators exist in other sets of parsing combinators. Some of these, e.g. a combination of the nofail and cut combinators de ned in [Wad85], can sometimes achieve the same improvement in speed and memory usage as the cut described in this paper. The unique point of my cut combinator is that it achieves the space saving and still allows reporting of errors. nhc a space eOEcient Haskell compiler: This compiler tries to produce space ....

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


Using a Functional Language for Parsing and Semantic Processing - Lapalme, Lavier (1997)   (Correct)

....quantifiers are involved. 2 Presentation of Miranda Miranda is a functional programming language which features function definition by recursive equations allowing higher order functions (they may accept functions as arguments and may produce functions as results) In our case, following [3] and [26], we represent a parser as a function that accepts a list of tokens and returns either an empty list as indication of failure or a list of results each comprising an interpretation of the tokens accepted (e.g. a parse tree) and the list of tokens remaining in the input. Higher order functions are ....

....Inc. cause they enable the incremental building of results even if all the input has not been completed thus modelling easily interactive programs. They also allow an alternative to the backtracking implementation technique for nondeterminism using the list of successes approach advocated by [26]. Miranda is a strongly typed language that enables a compile time checking of the program. Miranda allows for polymorphic types, so a single function definition can be used in many contexts while keeping a static checking of the program. This is especially useful to catch attention errors that ....

[Article contains additional citation context not shown here]

P. Wadler. How to replace failure by a list of successes. In P. Jouannaud, editor, Conference on Functional Programming and Computer Architecture, Lecture Notes in Computer Science #201, pages 114--127, 1985.


Database Object Creation Subject to Constraint Rules Using a.. - Embury, Gray (1995)   (Correct)

....of the program are executed once for each element (i.e. each tuple) of the set. The semantics of the loops of an Daplex program are also based on ZF expressions, in an idiom corresponding to the list of successes technique for describing constrained search problems of this kind functionally [29]. The only difference between the standard Daplex loops and the nondeterministic for a new loop is that the former contribute existing database values to the loops set, while the latter contributes a set of tuples describing the attribute values of the new instances required to satisfy the given ....

P. Wadler. How to Replace Failure by a List of Successes. In J.-P. Jouannaud, editor, Proceedings of the IFIP Int. Conf. on Functional Programming Languages and Computer Architecture, Lecture Notes in Computing Science, Vol. 201, pages 113--128, Nancy, France, September 1985. Springer-Verlag.


A Standard Library Proposal for Haskell 1.3 - Version 3 - Reid, Peterson (1995)   (Correct)

....and recommend solutions. The obvious trick of performing eta expansion won t work if the type Parser is abstract. 2. Because of the exception handling, parsers built using parser combinators are often strict they have to do an entire parse before they can return any part of the result. Wadler [13] describes how to turn parsing exceptions into errors to overcome this problem. From memory) he uses: noFail : Parser [a] b Parser [a] b noFail p i = let (a,i ) rs = p i in (a,i ) rs The final proposal must provide this function 4 NEW LIBRARIES 26 4.14 Binary Haskell 1.2 provided a type ....

PL Wadler. How to replace failure by a list of successes. In Functional Programming and Computer Architecture, 1985.


A Simple Type Inference Algorithm - Wadler   Self-citation (Wadler)   (Correct)

....Wadler 14 June 1990 Revised Phil Wadler 3 August 1990 Added surrounds and separators Phil Wadler 6 August 1990 A favourite trick of functional programmers is to implement a recursive descent parser using higher order functions. This module provides a library of such functions. For background see [Wad85] and [Wad90] module Parse (Parse, Parses, data types thenP, returnP, eachP, consP, sequencing and success elseP, failP, guardP, filterP, alternation and failure starP, plusP, cutP, repetition and cut endP, itemP, litP, litsP, exactlyP, end, next item, and literals ....

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


Projections for Strictness Analysis - Wadler, Hughes (1987)   (89 citations)  Self-citation (Wadler)   (Correct)

....solved using standard fixpoint techniques, instead of the algebraic manipulation previously used. Praises of lazy functional languages have been widely sung, and so have some curses. One reason for praise is that laziness supports programming styles that are inconvenient or impossible otherwise [Joh87, Hug84, Wad85a]. One reason for cursing is that laziness hinders efficient implementation. Still, acceptable efficiency for lazy languages is at last being achieved. This is done by means of graph reduction [Pey87] as found in the G machine [Aug84, Joh84] and the Ponder implementation [FW86] among others. The ....

P. L. Wadler. How to replace failure by a list of successes. In Conference on Functional Programming Languages and Computer Architecture, Nancy, France, 1985.


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