Results 1  10
of
11
Curry: A Truly Functional Logic Language
, 1995
"... Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. However, integrated functional logic languages are currently not widely used. This is due to the fact that the operational principles are not w ..."
Abstract

Cited by 53 (5 self)
 Add to MetaCart
Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. However, integrated functional logic languages are currently not widely used. This is due to the fact that the operational principles are not well understood and many different evaluation strategies have been proposed which resulted in many different functional logic languages. To overcome this situation, we propose the functional logic language Curry which can deal as a standard language in this area. It includes important ideas of existing functional logic languages and recent developments, and combines the most important features of functional and logic languages. Thus, Curry can be the basis to combine the currently separated research efforts of the functional and logic programming communities and to boost declarative programming in general. Moreover, since functions provide for more efficient evaluation strategies and ...
Adding Type Classes to Functionallogic Languages
, 1996
"... : The paper discusses the advantages of introducing type classes into functionallogic languages. Type classes are a powerful type system included in the functional language Haskell that allow to model some of the object oriented programming features. A number of problems arise when type classes are ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
: The paper discusses the advantages of introducing type classes into functionallogic languages. Type classes are a powerful type system included in the functional language Haskell that allow to model some of the object oriented programming features. A number of problems arise when type classes are combined with the functional and logic characteristics of the language, and we sketch some solutions. On the other hand it has a number of advantages like the declarative model of Prolog attribute variables or the integration in the language of bounded quantifiers. 1 Motivation During the last decade, several proposals have been made to achieve the combination of the most important declarative programming paradigms (see [Han94b, MN94b] for surveys). The resulting languages have been called functional logic languages. They offer features from functional programming (nested expressions, lazy evaluation higherorder features) and logic programming (logical variables, partial data structures, s...
UPVCurry: An Incremental Curry Interpreter
, 1999
"... . Functional logic programming integrates the best features of modern functional and logic languages. The multiparadigm declarative language Curry is an extension of Haskell which is intended to become a standard in the area. In this paper, we present UPVCurry, an efficient and quite complete impl ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
. Functional logic programming integrates the best features of modern functional and logic languages. The multiparadigm declarative language Curry is an extension of Haskell which is intended to become a standard in the area. In this paper, we present UPVCurry, an efficient and quite complete implementation of Curry based on a new, incremental definition of its basic evaluation mechanism. We compare UPVCurry with already existing implementations of other Curry interpreters. Keywords: Curry, Functional logic languages, Implementation. 1 Introduction Functional logic languages combine the best features of the most important declarative programming paradigms, namely functional and logic programming (see [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 l...
A note on declarative programming paradigms and the future of definitional programming
 In Proceedings of Das Wintermote 96
, 1996
"... We discuss some approaches to declarative programming including functional programming, various logic programming languages and extensions, and definitional programming. In particular we discuss the programmers need and possibilities to influence the control part of programs. We also discuss some pr ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We discuss some approaches to declarative programming including functional programming, various logic programming languages and extensions, and definitional programming. In particular we discuss the programmers need and possibilities to influence the control part of programs. We also discuss some problems of the definitional programming language GCLA and try to find directions for future research into definitional programming. 1
HigherOrder FunctionalLogic Programming: A Systematic Development
 In Proc. of the Second Fuji International Workshop on Functional and Logic Programming. World Scientific
, 1997
"... We develop an effective model for higherorder functionallogic programming by refining higherorder narrowing calculi. The refinements reduce the high degree of nondeterminism in narrowing calculi, utilizing properties of functional(logic) programs. These include convergent and leftlinear rewrit ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We develop an effective model for higherorder functionallogic programming by refining higherorder narrowing calculi. The refinements reduce the high degree of nondeterminism in narrowing calculi, utilizing properties of functional(logic) programs. These include convergent and leftlinear rewrite rules. All refinements can be combined to a narrowing strategy which generalizes callbyneed as in functional programming. Furthermore, we consider conditional rewrite rules which are often convenient for programming applications. 1. Introduction We present a systematic development of a calculus which integrates higherorder functional and logic programming, based on narrowing. Narrowing is a general method for solving equations modulo a set of rewrite rules. Functionallogic languages with a sound and complete operational semantics are mainly based on narrowing. For a survey on the topic we refer to [9]. In our higherorder equational logic we use a rewrite relation due to Nipkow [18],...
Incremental Needed Narrowing
 In Proc. of the Int’l Workshop on Implementation of Declarative Languages (IDL’99
, 1999
"... Needed narrowing is currently the best complete strategy for executing inductively sequential functional logic programs. Its optimality properties and the fact that inductively sequential programs are a subclass of strongly sequential programs support the claim that needed narrowing must be consider ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Needed narrowing is currently the best complete strategy for executing inductively sequential functional logic programs. Its optimality properties and the fact that inductively sequential programs are a subclass of strongly sequential programs support the claim that needed narrowing must be considered the functional logic couterpart of Huet and Lévy's strongly needed reduction. In this paper, we show how a preeminent property of reduction in (a distinguished subclass of) strongly sequential programs, namely the incrementality of the evaluation, can be inherited by needed narrowing. We give an incremental definition of needed narrowing and show that the original optimality properties are kept. Moreover, we experimentally demonstrate that the incremental refinement can lead to substantial improvements in the overall evaluation process.
Higher Order Logic Programming with Untyped Lambda Expressions
"... Abstract. A higher order logic programming system is presented. The declarative semantics of the system is based on the typefree higher order logic NaDSyL, which takes a nominalist approach to solving the settheoretic paradoxes. The operational semantics is based on the deterministic and useful su ..."
Abstract
 Add to MetaCart
Abstract. A higher order logic programming system is presented. The declarative semantics of the system is based on the typefree higher order logic NaDSyL, which takes a nominalist approach to solving the settheoretic paradoxes. The operational semantics is based on the deterministic and useful subset of higher order uni cation known as pattern uni cation. It is shown that the system allows all expressions of the untyped lambda calculus, including the Y combinator and expressions capturing recursive functions, without losing consistency due to Curry's paradox. The system automatically performs lazy function application and thus uni es higher order logic and functional programming in a simple and elegant manner. 1
Abstract Evaluation Strategies for Functional Logic Programming
"... Recent advances in the foundations and the implementations 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 pro ..."
Abstract
 Add to MetaCart
Recent advances in the foundations and the implementations 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. This paper discusses the elements that play a relevant role in evaluation strategies for functional logic computations, describes some important classes of rewrite systems that model functional logic programs, shows examples of the differences in expressiveness provided by these classes, and reviews the characteristics of narrowing strategies proposed for each class of rewrite systems.