A notion of a needed narrowing step that is sound and complete for a large class of rewrite systems, is optimal w.r.t. the cost measure that counts the number of distinct steps of a derivation, computes only independent unifiers, and is efficiently implemented by pattern matching.Expand

ion: A[x/τ ] ` e :: τ ′ A ` \x->e :: τ → τ ′ if τ is a type expression Existential: A[x/τ ] ` e :: τ ′ A ` let x free in e :: τ ′ if τ is a type expression Figure 1: Typing rules for Curry programs… Expand

ion: A[x/τ ] ` e :: τ ′ A ` \x->e :: τ → τ ′ if τ is a type expression Existential: A[x/τ ] ` e :: Success A ` let x free in e :: Success if τ is a type expression Conditional: A ` e1 :: Bool A ` e2… Expand

The application of Xbase is presented by means of a domain model language which serves as a tutorial example and by the implementation of the programming language Xtend, a functional and object-oriented general purpose language for the Java Virtual Machine (JVM).Expand

A new computation model which combines the operational principles of functional languages (reduction), logic languages, and integrated functional logic languages (residuation and narrowing) and is a suitable basis for future declarative programming languages.Expand

This paper extends the needed narrowing strategy to higher-order functions and λ-terms as data structures and is the first calculus for higher- order functional logic programming which provides for such an optimality result.Expand

The functional logic language Curry is proposed which can deal as a standard language in this area and includes important ideas of existing functional logic languages and recent developments, and combines the most important features of functional and logic languages.Expand

This paper surveys approaches to combine different classes of declarative languages, like functional, logic, or constraint programming languages, into a single programming language.Expand