Results 1  10
of
78
An Implementation of Narrowing Strategies
 Journal of the ACM
, 2001
"... This paper describes an implementation of narrowing, an essential component of implementations of modern functional logic languages. These implementations rely on narrowing, in particular on some optimal narrowing strategies, to execute functional logic programs. We translate functional logic progra ..."
Abstract

Cited by 302 (116 self)
 Add to MetaCart
This paper describes an implementation of narrowing, an essential component of implementations of modern functional logic languages. These implementations rely on narrowing, in particular on some optimal narrowing strategies, to execute functional logic programs. We translate functional logic programs into imperative (Java) programs without an intermediate abstract machine. A central idea of our approach is the explicit representation and processing of narrowing computations as data objects. This enables the implementation of operationally complete strategies (i.e., without backtracking) or techniques for search control (e.g., encapsulated search). Thanks to the use of an intermediate and portable representation of programs, our implementation is general enough to be used as a common back end for a wide variety of functional logic languages.
A unified computation model for functional and logic programming
 IN PROC. OF THE 24TH ACM SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES (PARIS
, 1997
"... We propose a new computation model which combines the operational principles of functional languages (reduction), logic languages (nondeterministic search for solutions), and integrated functional logic languages (residuation and narrowing). This computation model combines efficient evaluation prin ..."
Abstract

Cited by 143 (71 self)
 Add to MetaCart
We propose a new computation model which combines the operational principles of functional languages (reduction), logic languages (nondeterministic search for solutions), and integrated functional logic languages (residuation and narrowing). This computation model combines efficient evaluation principles of functional languages with the problemsolving capabilities of logic programming. Since the model allows the delay of function calls which are not sufficiently instantiated, it also supports a concurrent style of programming. We provide soundness and completeness results and show that known evaluation principles of functional logic languages are particular instances of this model. Thus, our model is a suitable basis for future declarative programming languages.
Operational Semantics for Declarative MultiParadigm Languages
 Journal of Symbolic Computation
, 2005
"... Abstract. In this paper we define an operational semantics for functional logic languages covering notions like laziness, sharing, concurrency, nondeterminism, etc. Such a semantics is not only important to provide appropriate language definitions to reason about programs and check the correctness ..."
Abstract

Cited by 67 (29 self)
 Add to MetaCart
(Show Context)
Abstract. In this paper we define an operational semantics for functional logic languages covering notions like laziness, sharing, concurrency, nondeterminism, etc. Such a semantics is not only important to provide appropriate language definitions to reason about programs and check the correctness of implementations but it is also a basis to develop languagespecific tools, like program tracers, profilers, optimizers, etc. First, we define a &quot;bigstep &quot; semantics in natural style to relate expressions and their evaluated results. Since this semantics is not sufficient to cover concurrency, search strategies, or to reason about costs associated to particular computations, we also define a &quot;smallstep &quot; operational semantics covering the features of modern functional logic languages.
The NarrowingDriven Approach to Functional Logic Program Specialization
 New Generation Computing
, 2002
"... Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed. ..."
Abstract

Cited by 37 (21 self)
 Add to MetaCart
Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed.
Evaluation Strategies for Functional Logic Programming
 Journal of Symbolic Computation
, 2001
"... . Recent advances in the foundations and the development of functional logic programming languages originate from farreaching results on narrowing evaluation strategies. Narrowing is a computation similar to rewriting which yields substitutions in addition to normal forms. In functional logic pr ..."
Abstract

Cited by 35 (22 self)
 Add to MetaCart
(Show Context)
. Recent advances in the foundations and the development of functional logic programming languages originate from farreaching results on narrowing evaluation strategies. Narrowing is a computation similar to rewriting which yields substitutions in addition to normal forms. In functional logic programming, the classes of rewrite systems to which narrowing is applied are, for the most part, subclasses of the constructorbased, possibly conditional, rewrite systems. Many interesting narrowing strategies, particularly for the smallest subclasses of the constructorbased rewrite systems, are generalizations of wellknown rewrite strategies. However, some strategies for larger nonconfluents subclasses have been developed just for functional logic computations. In this paper, I will discuss the elements that play a relevant role in evaluation strategies for functional logic programming, describe some important classes of rewrite systems that model functional logic programs, show examples of the differences in expressiveness provided by these classes, and review the characteristics of narrowing strategies proposed for each class of rewrite systems. 1
A Higher Order Rewriting Logic for Functional Logic Programming
, 1997
"... According to a well known conception, programs in a declarative programming language can be viewed as theories in some suitable logic, while computations can be viewed as deductions. In our opinion, there is yet no general assent on the logic to be viewed as the foundation of higher order, lazy func ..."
Abstract

Cited by 32 (1 self)
 Add to MetaCart
(Show Context)
According to a well known conception, programs in a declarative programming language can be viewed as theories in some suitable logic, while computations can be viewed as deductions. In our opinion, there is yet no general assent on the logic to be viewed as the foundation of higher order, lazy functional logic languages. In this paper, we argue that a specific rewriting logic can play this role, and we justify the adequacy of our proposal by means of prooftheoretical and modeltheoretical results. Moreover, we present a sound and complete lazy narrowing calculus for goal solving, and we discuss a circuit synthesis problem that illustrates the expressiveness of our approach. This example has been tested in an implemented system. KEYWORDS: Functional logic programming, nondeterministic functions, higherorder rewriting logic, lazy narrowing. 1 Introduction The interest in multiparadigm declarative programming has grown over the last two decades, giving rise to different approaches t...
A Practical Partial Evaluation Scheme for MultiParadigm Declarative Languages
 Journal of Functional and Logic Programming
, 2002
"... \Lambda y ..."
(Show Context)
HigherOrder Rewriting
 12th Int. Conf. on Rewriting Techniques and Applications, LNCS 2051
, 1999
"... This paper will appear in the proceedings of the 10th international conference on rewriting techniques and applications (RTA'99). c flSpringer Verlag. ..."
Abstract

Cited by 27 (1 self)
 Add to MetaCart
(Show Context)
This paper will appear in the proceedings of the 10th international conference on rewriting techniques and applications (RTA'99). c flSpringer Verlag.
A Semantics for Tracing Declarative MultiParadigm Programs
 In Proceedings of the 6th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP’04
, 2004
"... We introduce the theoretical basis for tracing lazy functional logic computations in a declarative multiparadigm language like Curry. Tracing computations is a difficult task due to the subtleties of the underlying operational semantics which combines laziness and nondeterminism. In this work, we ..."
Abstract

Cited by 22 (13 self)
 Add to MetaCart
(Show Context)
We introduce the theoretical basis for tracing lazy functional logic computations in a declarative multiparadigm language like Curry. Tracing computations is a difficult task due to the subtleties of the underlying operational semantics which combines laziness and nondeterminism. In this work, we define an instrumented operational semantics that generates not only the computed values and bindings but also an appropriate data structure—a sort of redex trail—which can be used to trace computations at an adequate level of abstraction. In contrast to previous approaches, which rely solely on a transformation to instrument source programs, the formal definition of a tracing semantics improves the understanding of the tracing process. Furthermore, it allows us to formally prove the correctness of the computed trail. A prototype implementation of a tracer based on this semantics demonstrates the usefulness of our approach.
A Virtual Machine for Functional Logic Computations
 In Proc. of the 16th International Workshop on Implementation and Application of Functional Languages (IFL 2004
, 2005
"... Abstract. We describe the architecture of a virtual machine for executing functional logic programming languages. A distinguishing feature of our machine is that it preserves the operational completeness of nondeterministic programs by concurrently executing a pool of independent computations. Each ..."
Abstract

Cited by 20 (17 self)
 Add to MetaCart
(Show Context)
Abstract. We describe the architecture of a virtual machine for executing functional logic programming languages. A distinguishing feature of our machine is that it preserves the operational completeness of nondeterministic programs by concurrently executing a pool of independent computations. Each computation executes only rootneeded sequential narrowing steps. We describe the machine’s architecture and instruction set, and show how to compile overlapping inductively sequential programs to sequences of machine instructions. The machine has been implemented in Java and in Standard ML. 1