| M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995. |
....the level of abstraction. This explains the interest in higher order systems such as higher order logics and higherorder deduction systems [And86,Pau94,GLM97,And01,Pfe01] higher order (functional) programming languages [BMS80,Tur85,Pau91,Bar90,Bir98] higherorder logic programming languages [Mil91,HKMN95], higher order rewriting [Nip91,Klo92,DJ90] and higher order uni cation [Hue75,Dow01] It is well known that second order uni cation hence higher order uni cation is undecidable ( Gol81,Far91,LV00a] Higher order uni cation procedures were already described by in [Hue75,JP76] The ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
.... rules presented so far, includes the fully automatic composition strategy based on [4] and is able to optimize programs written in the language Curry, a modern multiparadigm declarative language based on needed narrowing which is intended to become a standard in the functional logic community [16, 17]. Nowadays we are incorporating the automatic tupling algorithm presented in this paper to the kernel of the system. From here, we are interesting in opening two new research lines: 1. To obtain a fully automatic optimizing tool. This action might culminate by incorporating the global system ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....strategy. Innermost narrowing is the foundation of several functional logic programming languages like SLOG [30] LPG [14,15] and (a subset of) ALF [33] Innermost narrowing corresponds to the eager evaluation strategies in functional programming. Modern functional logic languages like Curry [35], Escher [39] and Toy [21] are based on lazy evaluation principles, which delay the evaluation of function arguments until their values are needed to compute some result. This avoids unnecessary computations and allows one to deal with infinite data structures [34] Needed narrowing is a complete ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....of t at position p is denoted by t p and the result of replacing t p with a term s is denoted by t[s] p . 2. 1 Programs In this section, we introduce a functional logic language which can be thought of as a common core for some popular lazy functional logic languages such as Babel [22] Curry [14], and Toy [19] A rewrite rule is an ordered pair l r such that l, r ) l , and Var(r) # Var(l) Terms l and r are called the left hand side and the right hand side of the rule, respectively. A term rewriting system (TRS) is a pair R# is a signature and is a set of rewrite ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. of ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....of t at position p is denoted by tj p and the result of replacing tj p with a term s is denoted by t[s] p . 2. 1 Programs In this section, we introduce a functional logic language which can be thought of as a common core for some popular lazy functional logic languages such as Babel [18] Curry [10], and Toy [15] A rewrite rule is an ordered pair l r such that l; r 2 T (F ; X ) l 62 X , and Var(r) Var(l) Terms l and r are called the left hand side (lhs) and the right hand side (rhs) of the rule, respectively. A term rewriting system (TRS) is a pair hF ; Ri where F is a signature and ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....strategies have been proposed (see [12] for a survey. How to debug functional logic programs is an important practical problem which has been hardly addressed in the literature before. Only a few functional logic languages are equipped with a debugging tool (e.g. ALF [11] Babel [18] and Curry [14]) But those debuggers consist of tracers which are based on suitable extended box models which help display the execution [13, 4] Due to the complexity of the operational semantics of (functional) logic programs, the information obtained by tracing the execution is dicult to understand. The ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....to the execution of logic programs, while the latter corresponds to functional execution. Completeness is more subtle. We omit its de nition as we will not be able to guarantee completeness anyway. 3 Compiling functional logic speci cations Functional logic programming languages such as Curry [9] should be ideal target languages for code generation from HOL speci cations. But although such languages contain many of the required concepts and there is an impressive amount of research in this area, the implementations which are currently available are not always satisfactory. We therefore ....
M. Hanus, H. Kuchen, and J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....the level of abstraction. This explains the interest in higher order systems such as higher order logics and higherorder deduction systems [And86,Pau94,GLM97,And01,Pfe01] higher order (functional) programming languages [BMS80,Tur85,Pau91,Bar90,Bir98] higherorder logic programming languages [Mil91,HKMN95], higher order rewriting [Nip91,Klo92,DJ90] and higher order uni cation [Hue75,Dow01] It is well known that second order uni cation hence higher order uni cation is undecidable ( Gol81,Far91,LV00a] Higher order uni cation procedures were already described by in [Hue75,JP76] The ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....when = out. Innermost narrowing is the foundation of several functional logic programming languages like SLOG [21] LPG [7, 8] and (a subset of) ALF [23] Innermost narrowing corresponds to the eager evaluation strategies in functional programming. Modern functional logic languages like Curry [25], Escher [31] and Toy [12] are based on lazy evaluation principles, which delay the evaluation of function arguments until their values are needed to compute some result. This avoids unnecessary computations and allows one to deal with in nite data structures [24] Needed narrowing is a complete ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....which is publicly available at http: www.dsic.upv.es users elp soft.html. It is written in SICStus Prolog and includes a parser for the language Curry, a modern multiparadigm declarative language based on needed narrowing which is intended to become a standard in the functional logic community [20, 22]. It also includes a fully automatic composition strategy based on some (apparently reasonable) heuristics. We are currently extending it in order to mechanize some (delimited form of) tupling (e.g. by using the analysis method of [9, 10] The transformation system allows us to choose between ....
....finiteness) then the original rule is replaced by the one corresponding to this branch; otherwise, the set of unfoldings corresponding to all non failed branches is returned. All the programs have been executed by using TasteCurry, which is a publicly available interpreter for a subset of Curry [20]. Table 1 summarizes our benchmark results. The first two columns measure the number of rewrite rules (Rw 1 ) and the absolute runtimes (RT 1 ) for the original programs. The other columns show the number of rewrite rules (Rw 2 ) the absolute runtimes (RT 2 ) and the speedups achieved for the ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....strategies have been proposed (see [29] for a survey. How to debug functional logic programs is an important practical problem which has hardly been addressed in the previous literature. Only a few functional logic languages are equipped with a debugging tool (e.g. ALF [28] Babel [39] and Curry [31]) However, these debuggers consist of tracers which are based on suitable extended box models which help display the execution [30, 5] Due to the complexity of the operational semantics of (functional) logic programs, the information obtained by tracing the execution is dicult to understand. The ....
....when = out. Innermost narrowing is the foundation of several functional logic programming languages like SLOG [26] LPG [7, 8] and (a subset of) ALF [28] Innermost narrowing corresponds to the eager evaluation strategies in functional programming. Modern functional logic languages like Curry [31], Escher [35] and Toy [13] are based on lazy evaluation principles, which delay the evaluation of function arguments until their values are needed to compute some result. This avoids unnecessary computations and allows one to deal with in nite data structures [29] Needed narrowing is a complete ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....strategies have been proposed (see [28] for a survey. How to debug functional logic programs is an important practical problem which has been hardly addressed in the literature before. Only a few functional logic languages are equipped with a debugging tool (e.g. ALF [27] Babel [38] and Curry [30]) But those debuggers consist of tracers which are based on suitable extended box models which help display the execution [29, 4] Due to the complexity of the operational semantics of (functional) logic programs, the information obtained by tracing the execution is difficult to understand. The ....
....[26] Innermost narrowing is the foundation of several functional logic programming languages like SLOG [25] LPG [6, 7] and (a subset of) ALF [27] Innermost narrowing corresponds to the eager evaluation strategies in functional programming. Modern functional logic languages like Curry [30], Escher [34] and Toy [12] are based on lazy evaluation principles, which delay the evaluation of function arguments until their values are needed to compute some result. This avoids unnecessary computations and allows one to deal with infinite data structures [28] Needed narrowing is a complete ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....needed narrowing will be a crucial step for the development of a general purpose, modern, functional logic language. Some features of our proposal, their implementation techniques, and even the absence of other features may contribute to re ne more ambitious proposals, such as the language Curry [9], aiming at the de nition of a successor to Prolog. Acknowledgment We are grateful to the entire G odel group at Bristol for designing and implementing G odel and for assisting us in our e ort to modify the compiler. We are indebted to John Lloyd for comments on and corrections of an early draft ....
M. Hanus, H Kuchen, and J.J. Moreno Navarro. Curry: A truly functional logic language. In Workshop on Laying the Foundation for a Modern Successor to Prolog, Portland, OR, Dec. 1995. (these proceedings).
....which is publicly available at http: www.dsic.upv.es users elp soft.html. It is written in SICStus Prolog and includes a parser for the language Curry, a modern multiparadigm declarative language based on needed narrowing which is intended to become a standard in the functional logic community [16, 17]. It also includes a fully automatic composition strategy based on some (apparently reasonable) heuristics. The transformation system allows us to choose between two ways to apply the composition strategy. The first way is semi automatic, since the user has to indicate the rule in which a nested ....
....composition algorithm. The other columns show the number of rewrite rules (Rw 2 ) the absolute runtimes (RT 2 ) and the speedups achieved for the transformed programs. All the programs have been executed by using TasteCurry, which is a publicly available interpreter for a subset of Curry [16]. Times are expressed in seconds and are the average of 10 executions. We note that our (automatic) composition strategy performs well w.r.t. the first four benchmarks. They are classical examples in which composition is able to perform an effective optimization (sumprefix is described in Example ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....logic programming, so there is no generalization of the notion of successful derivation as in the present paper. A different yet related area of research is that of the integration of functional and logic programming. Several functional logic languages such as Kernel LEAF [9] Babel [16] Curry [11], Escher [13] have been the subject of extensive research. For an overview of the subject see [10] The present work is not meant to integrate the two programming paradigms, but only to enrich the expressive power of the logic programming. Finally, the papers [1] and [18] concern methods to ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....in the field of declarative programming. The integration has been approached through the implementation of languages that combine concepts from logic and functional programming. Some recently developed languages that combine the two paradigms are Babel [13] Kernel LEAF [4] Escher [9] and Curry [6]. This approach provides programmers with efficient hybrid tools for declarative programming, but most of those implementations lack the semantical clarity that our embedding possesses. LogLisp [18, 17] and a few other languages embed logic programming in Lisp. The embedding is at the same level ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....of logic programming, so there is no generalization of the notion of successful derivation as in the present paper. A di erent yet related area of research is that of the integration of functional and logic programming. Several functional logic languages such as Kernel LEAF [9] Babel [16] Curry [11], Escher [13] have been the subject of extensive research. For an overview of the subject see [10] The present work is not meant to integrate the two programming paradigms, but only to enrich the expressive power of the logic programming. Finally, the papers [1] and [18] concern methods to ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....with the capability to solve arbitrary constraints for the values of variables. The list of languages that have been proposed in an attempt to incorporate the expressive power of both functional and logic paradigms is long and impressive [2, 6] some notable examples are Kernel LEAF [5] Curry [7], Escher [9] and Babel [12] Our research goal is different from the one set by these projects. They aspire to build an efficient language that can offer programmers the most useful features of both worlds; to achieve this additional expressivity they have to adopt somewhat complicated semantics. ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
.... [Han94] Other survey articles on the relation between functional and logic languages and their integration are [BL86, DFP86, WP00, DGP92, Llo94, Llo98] and [Red87] Some recently developed languages that combine the two paradigms are Babel [MNRA92] Kernel Leaf [GLMP91] Escher [Llo95] and Curry [HKMN95]. Languages that are specially designed for higher order logic programming are Lambda Prolog [Mil91, NM88, GH95] Mercury [SHC95] and HiLog [CKW93] Loglisp [RS82, Rob88, CT82] by A.J. Robinson is a simmilar approach to the shallow embedding in that it uses an existing functional language (Lisp) ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....for a survey) Throughout this decade, many practical proposals have been made to amalgamate functional and logic programming languages. However, these languages have not succeeded in becoming widely used by the functional or logic programming communities. The multi paradigm language Curry [HKMN95,HAK 99] is an extension of Haskell [HPW92] which is supported by an international initiative to make it a standard in the area. In order to facilitate and extend the use of Curry, it is essential to make efficient and practical implementations available. Program transformation techniques ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....guide needed narrowing computations, namely, the de nitional trees, and then we formalize an incremental de nition of , i.e. an incremental procedure which actually implements needed narrowing computations. We have applied our techniques to the optimization of the multi paradigm language Curry [HKMN95, HAK 99] an extension of Haskell [HPW92] which is supported by an international initiative with the aim of becoming a standard in the area and whose operational model is based on needed narrowing. We prove that all the proposed optimizations are actually (and independently) e ective by ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
....[Han94] for a survey) Throughout this decade, many practical proposals have been made to amalgamate functional and logic programming languages. However, these languages have not succeeded in becoming widely used by the functional or logic programming communities. The multiparadigm language Curry [HKMN95, HAK 99] is an extension of Haskell [HPW92] which is supported by an international initiative with the aim of becoming a standard in the area. Curry incorporates almost all the desirable features of an integrated language: types, modules, higher order facilities, and declarative input output ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....acceptably efficient Prolog extension. The research effort into the combination of logic and functions continues to be quite diverse. While broadly the extensions might be described as adding logical variables to functional programming and the reduction of nested expressions to logic programming [HKMN95] a number of independent goals are being pursued: 1. An improvement in the expressiveness of the extended language, or the fit of the language to the problem domain [MN94] 2. An improvement in efficiency through earlier recognition of failure paths [Fri85] or recognition of determinism and ....
M. Hanus, H. Kuchen, and Juan Jos'e Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS Workshop on Visions for the Future of Logic Programming, Portland (USA), December 1995.
.... of logic programming computation of answers as well as functional programming computation of normal forms (see [19] for a survey) In order to avoid unnecessary computations and to compute with infinite data structures, most recent work has concentrated on lazy narrowing strategies [15, 20, 32, 34, 41]. This work has been partially supported by CICYT TIC 95 0433 C03 03, by HCM project CONSOLE and by Acci on Integrada HA1997 0073. The aim of partial evaluation (PE) is to specialize a given program w.r.t. part of its input data (hence, also called program specialization) PE techniques have ....
.... containing primitive functions, such as conditionals and strict equalities) in a natural way, which provides for polygenetic specialization without any ad hoc artifice; and iii) our method is applicable to modern functional logic languages with a lazy narrowing semantics such as Babel [34] Curry [20] and Toy [9] thus giving a specialization method which subsumes both lazy functional and conventional logic program specialization. We demonstrate the quality of these improvements by specializing some examples which were not handled well by classical NPE. The control strategies have been tested ....
[Article contains additional citation context not shown here]
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....lefttoright manner. The types of variables would change. If a variable has type t in the pattern then it would have type [t] in the right hand side of the equation. This would be very confusing. This nondeterministic approach would t better in a integrated functional logic language like Curry [HKMN95] or Babel [KLMNRA96] than in a purely functional one. 2.2 Additional Features Sometimes it is necessary to restrict the possible matches of a context pattern. Suppose we use the following data structure to represent trees with a list of attributes at each node: data Tree a = TNode [a] Tree a] ....
M. Hanus, H. Kuchen, and J. J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95107, 1995.
....needed narrowing will be a crucial step for the development of a general purpose, modern, functional logic language. Some features of our proposal, their implementation techniques, and even the absence of other features may contribute to refine more ambitious proposals, such as the language Curry [9], aiming at the definition of a successor to Prolog. Acknowledgment We are grateful to the entire Godel group at Bristol for designing and implementing Godel and for assisting us in our effort to modify the compiler. We are indebted to John Lloyd for comments on and corrections of an early draft ....
M. Hanus, H Kuchen, and J.J. Moreno Navarro. Curry: A truly functional logic language. In Workshop on Laying the Foundation for a Modern Successor to Prolog, Portland, OR, Dec. 1995. (these proceedings).
....lefttoright manner. The types of variables would change. If a variable has type t in the pattern then it would have type [t] in the right hand side of the equation. This would be very confusing. This nondeterministic approach would t better in a integrated functional logic language like Curry [HKMN95] or Babel [KLMNRA96] than in a purely functional one. 3.2 Additional Features Sometimes it is necessary to restrict the possible matches of a context pattern. Suppose we use the following data structure to represent trees with a list of attributes at each node: data Tree a = TNode [a] Tree a] ....
M. Hanus, H. Kuchen, and J. J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95107, 1995.
....Little has been investigated how to incorporate higher order ness in functional logic programming. In this paper we present a computation model for a higher order functional and logic programming. Although investigations of computation models for higherorder functional logic languages are under way[13, 9, 8, 20, 22], implemented functional logic languages like K LEAF[6] and Babel[18] among others, are all based on first order models of computation. First order narrowing has been used as basic computation mechanism. The lack of higher order ness is exemplified by the following prototypical program map(F; ....
M. Hanus, H. Kuchen, and J. J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. of ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
.... rewriting between narrowing steps, whenever it is possible, since rewriting may cut an infinite search space to a finite one and can save a lot of time and space [Han91] It also allows us to avoid some of the extra logical control features of purely logic languages like the Prolog cut operator [HKMN95] The idea of exploiting deterministic computations by including normalization has been applied to almost all narrowing strategies, e.g. basic [NRS89, R 87] innermost [Fri85] innermost basic [Hol89] LSE [BW95] and lazy narrowing [Han94a] 3 Partial Evaluation of Functional Logic Programs ....
.... in other program modules) We also mention the investigation of the application of our framework to optimal versions of lazy narrowing strategies, such as needed narrowing [AEH94] and its extension to a higher order framework) which has been proposed as the basic operational principle of Curry [HKMN95] a language which is intended to become a standard in the functional logic programming community. Acknowledgements We wish to thank Jean Pierre Jouannaud, Robert Nieuwenhuis, Albert Rubio, and Morten S rensen for useful discussions. Part of this research was done while the third author was ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proceedings of the ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....that extend Antoy s de nitional tree creation algorithms [1] to parallel de nitional trees. Multi Paradigm Logic Programming The concrete implementation also comprises the de nition of a small language CUT (CUrry Translation) and a frontend, intended to support the development of CURRY [9]. It would be desirable to extend multistep narrowing to systems described by generalized de nitional trees, allowing subsumption among lhs of rules [8] Michael Hanus suggested how to simulate such systems using a parallel or . While this works well with sequential strategies, it causes overhead ....
M. Hanus, H. Kuchen, J.J. Moreno-Navarro, Curry: A Truly Functional Logic Language. Proc. ILPS Workshop on Visions for the Future of Logic Programming, 1995, pp. 95-107
....like in BABEL [17] For convenience, we provide algorithms that extend Antoy s definitional tree creation algorithms [1] to prdts. The concrete implementation also comprises the definition of a mini language CUT (CUrry Translation) and a frontend, so that it should support the development of CURRY [11]. We have presented the first implementation of a narrowing strategy with parallel steps. From the implementation point of view, we have suggested how to implement parallel narrowing with simplification, and have delivered many hints at why this strategy is optimal w.r.t. our criteria. A formal ....
M. Hanus, H. Kuchen, J.J. Moreno-Navarro, Curry: A Truly Functional Logic Language. Proc. ILPS Workshop on Visions for the Future of Logic Programming, pp. 95-107 (1995)
.... characters appear in the filename (e.g. you should type append.cur rather than append.cur) Language syntax follows mainly that of the language Curry, a modern multiparadigm declarative language based on needed narrowing which is intended to become a standard in the functional logic community [7, 8]. Programs consist of a set of datatype and function declarations. For instance, the datatype declaration data treeInt = leaf Int tree treeInt Int treeInt introduces the datatype treeInt of binary trees whose nodes are labelled with integers. A function is defined by a list of defining ....
....definition rule. 4 Experiments We have applied the fully automatic composition strategy to a set of benchmarks, as summarized by Table 1. All the programs are included in the distribution and have been executed by using TasteCurry, which is a publicly available interpreter for a subset of Curry [7]. The first two columns measure the number of rewrite rules (Rw 1 ) and the absolute runtimes (RT 1 ) for the original programs. The other columns show the number of rewrite rules (Rw 2 ) the absolute runtimes (RT 2 ) and the speedups achieved for the transformed programs. Runtimes were measured ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
....part of the control, thus improving expressiveness. Functional logic languages are also a natural framework to include higher order search, like in Prolog [NM88] ffl The notion of negation as failure can be extended to complete partial defined functions by using default rules [MN94a] Curry [HKMN95] is an attempt to integrate most of the proposals in the area in a single and standard language. In this paper we study the advantages of the addition of type classes [WB89] to Curry. Type classes are present in the functional language Haskell [HPJW92] and can handle some of the object oriented ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional-logic language. In ILPS'95 Post Conference Workshop on Declarative Languages for the Future, 1995.
....lazy narrowing strategies [4, 11, 23, 24, 26] Among these, there is one strategy, called needed narrowing [4] which is optimal w.r.t. the length of derivations and the number of computed solutions (for a restricted class of programs, called inductively sequential systems, see Section 4. 1) Curry [18] is a new functional logic language intended to combine recent developments in this area. In particular, Curry s operational semantics is based on the combination residuation and narrowing. The diOEculty in this combination is the fact that residuation rewrites functional expressions in a ....
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, 1995.
No context found.
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
No context found.
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
No context found.
M. Hanus, H. Kuchen, and J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
No context found.
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
No context found.
M. Hanus, H. Kuchen, and J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95--107, 1995.
No context found.
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In Proc. ILPS'95 Workshop on Visions for the Future of Logic Programming, pages 95-107, 1995.
No context found.
M. Hanus, H. Kuchen, J. Moreno-Navarro, Curry: A Truly Functional Logic Language. Visions for the Future of Logic Programming, pages 95-107, Portland, OR, December 1995.
No context found.
M. Hanus, H. Kuchen, and J. Moreno-Navarro. Curry: a truly functional logic language. Visions for the Future of Logic Programming, pages 95-107, Portland, OR, December 1995.
No context found.
M. Hanus, H. Kuchen, and J.J. Moreno-Navarro. Curry: A Truly Functional Logic Language. In , pages 95--107, 1995.
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