Results 1 -
7 of
7
The Integration of Functions into Logic Programming: From Theory to Practice
- Journal of Logic Programming
, 1994
"... Abstract. Functional logic programming languages combine the most important declarative programming paradigms, and attempts to combine these paradigms have a long history. The declarative multi-paradigm language Curry is influenced by recent advances in the foundations and implementation of function ..."
Abstract
-
Cited by 317 (50 self)
- Add to MetaCart
Abstract. Functional logic programming languages combine the most important declarative programming paradigms, and attempts to combine these paradigms have a long history. The declarative multi-paradigm language Curry is influenced by recent advances in the foundations and implementation of functional logic languages. The development of Curry is an international initiative intended to provide a common platform for the research, teaching, and application of integrated functional logic languages. This paper surveys the foundations of functional logic programming that are relevant for Curry, the main features of Curry, and extensions and applications of Curry and functional logic programming. 1
Multi-paradigm Declarative Languages
- In Proceedings of the International Conference on Logic Programming (ICLP 2007
, 2007
"... Abstract. Declarative programming languages advocate a programming style expressing the properties of problems and their solutions rather than how to compute individual solutions. Depending on the underlying formalism to express such properties, one can distinguish different classes of declarative l ..."
Abstract
-
Cited by 26 (11 self)
- Add to MetaCart
Abstract. Declarative programming languages advocate a programming style expressing the properties of problems and their solutions rather than how to compute individual solutions. Depending on the underlying formalism to express such properties, one can distinguish different classes of declarative languages, like functional, logic, or constraint programming languages. This paper surveys approaches to combine these different classes into a single programming language. 1
Overlapping Rules and Logic Variables in Functional Logic Programs
- In Twenty Second International Conference on Logic Programming
, 2006
"... Abstract. Functional logic languages extend purely functional languages with two features: operations defined by overlapping rules and logic variables in both defining rules and expressions to evaluate. In this paper, we show that only one of these features is sufficient in a core language. On the o ..."
Abstract
-
Cited by 24 (8 self)
- Add to MetaCart
Abstract. Functional logic languages extend purely functional languages with two features: operations defined by overlapping rules and logic variables in both defining rules and expressions to evaluate. In this paper, we show that only one of these features is sufficient in a core language. On the one hand, overlapping rules can be eliminated by introducing logic variables in rules. On the other hand, logic variables can be eliminated by introducing operations defined by overlapping rules. The proposed transformations between different classes of programs not only give a better understanding of the features of functional logic programs but also may simplify implementations of functional logic languages. 1
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 far-reaching 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 19 (12 self)
- Add to MetaCart
. Recent advances in the foundations and the development of functional logic programming languages originate from far-reaching 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 constructor-based, possibly conditional, rewrite systems. Many interesting narrowing strategies, particularly for the smallest subclasses of the constructor-based rewrite systems, are generalizations of wellknown rewrite strategies. However, some strategies for larger non-confluents 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
TeaBag: A Functional Logic Language Debugger
- In Proc. 13th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2004
, 2004
"... Abstract. We describe a debugger for functional logic computations. The debugger is an accessory of a virtual machine currently under development. A distinctive feature of this machine is its operational completeness of computations, which places novel demands on a debugger. We give an overview of t ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
Abstract. We describe a debugger for functional logic computations. The debugger is an accessory of a virtual machine currently under development. A distinctive feature of this machine is its operational completeness of computations, which places novel demands on a debugger. We give an overview of the debugger’s features, in particular the handling of nondeterminism, the ability to control non-deterministic steps, to remove context information, to toggle eager evaluation, and to set breakpoints on both functions and terms. We briefly describe the debugger’s architecture and its interaction with the associated virtual machine. Finally, we describe a short debugging session of a defective program to show in action debugger features and window screenshots. 1
Lazy Type Checking in Functional Logic Programming
"... In this paper we propose a lazy functional and logic language with a type system combining parametric and inclusion polymorphism. Programs in this language consist of an specication of parametric and ordered types together with a set of type declarations for data constructors and functions and a ..."
Abstract
- Add to MetaCart
In this paper we propose a lazy functional and logic language with a type system combining parametric and inclusion polymorphism. Programs in this language consist of an specication of parametric and ordered types together with a set of type declarations for data constructors and functions and a set of conditional constructor based rewriting rules describing the behaviour of functions, where the conditional part includes data and type conditions. In order to dene the semantics of the language we present a typed rewriting logic by means of two inference calculi, which allow to prove the validity of well-typed formulas w.r.t. a program. The operational semantics of the language is presented by means of a typed lazy narrowing calculus for goal solving which combines equational solving, lazy unication, sharing and type checking. In order to keep up the laziness of the language a lazy type checking is achieved during the goal solving process. We state soundness and complete...
A Transformational Approach to Polyvariant BTA of Higher-Order Functional Programs ⋆
"... Partial evaluation [10] aims at specializing programs w.r.t. part of their input data (the static data). Partial evaluation may proceed either online or offline. Online techniques implement a single, monolithic procedure that specializes the program while dynamically checking that the termination of ..."
Abstract
- Add to MetaCart
Partial evaluation [10] aims at specializing programs w.r.t. part of their input data (the static data). Partial evaluation may proceed either online or offline. Online techniques implement a single, monolithic procedure that specializes the program while dynamically checking that the termination of the process is kept.

