Results 1  10
of
13
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 multiparadigm language Curry is influenced by recent advances in the foundations and implementation of function ..."
Abstract

Cited by 362 (59 self)
 Add to MetaCart
(Show Context)
Abstract. Functional logic programming languages combine the most important declarative programming paradigms, and attempts to combine these paradigms have a long history. The declarative multiparadigm 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
Multiparadigm 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 53 (18 self)
 Add to MetaCart
(Show Context)
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 44 (20 self)
 Add to MetaCart
(Show Context)
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 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
Rewriting and calltime choice: the HO case
 In Proc. 9th International Symposium on Functional and Logic Programming (FLOPS’08), volume 4989 of LNCS
, 2008
"... Abstract. It is known that the behavior of nondeterministic functions with calltime choice semantics, present in current functional logic languages, is not well described by ordinary approaches to reduction like ordinary term rewriting systems or λcalculus. The presence of HO features makes thi ..."
Abstract

Cited by 10 (5 self)
 Add to MetaCart
(Show Context)
Abstract. It is known that the behavior of nondeterministic functions with calltime choice semantics, present in current functional logic languages, is not well described by ordinary approaches to reduction like ordinary term rewriting systems or λcalculus. The presence of HO features makes things more difficult, since reasoning principles that are essential in a standard (i.e., deterministic) functional setting, like extensionality, become wrong. In this paper we propose HOletrewriting, a notion of rewriting with local bindings that turns out to be adequate for programs with HO nondeterministic functions, as it is shown by strong equivalence results with respect to HOCRWL, a previously existing semantic framework for such programs. In addition, we give a sound and complete notion of HOletnarrowing, we show by a case study the usefulness of the achieved combination of semantic and reduction notions, and finally we prove within our framework that a standard approach to the implementation of HO features, namely translation to FO, is still valid for HO nondeterministic functions. 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
(Show Context)
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 nondeterministic 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
A Transformational Approach to Polyvariant BTA of HigherOrder Functional Programs
"... ..."
(Show Context)
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 welltyped 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...
Advances in type systems for FunctionalLogic Programming (Work in progress)
, 2009
"... Type systems are widely used in programming languages as a powerful tool providing safety to programs, and forcing the programmers to write code in a clearer way. Functionallogic languages have inherited Damas & Milner type system from their functional part due to its simplicity and popularity. ..."
Abstract
 Add to MetaCart
Type systems are widely used in programming languages as a powerful tool providing safety to programs, and forcing the programmers to write code in a clearer way. Functionallogic languages have inherited Damas & Milner type system from their functional part due to its simplicity and popularity. However, functionallogic languages have some problematic features not taken under consideration by standard systems. In particular, it is known that the use of opaque HO patterns in lefthand sides of program rules may produce undesirable effects from the point of view of types. We reexamine the problem, and propose a Damas & Milnerlike type system where certain uses of HO patterns (even opaque) are permitted while preserving type safety, as proved by a subject reduction result that uses a HOletrewriting, a recently proposed operational semantics for HO functional logic programs.