Multi-paradigm (functional logic) programming aims to amalgamate the most important declarative programming paradigms, namely functional programming and logic programming. In comparison with pure functional languages (like Haskell), functional logic languages have more expressive power due to the availability of features like function inversion, partial data structures, existential variables, and non-deterministic search. In comparison with pure logic languages (like Prolog), functional logic languages have a more efficient operational behavior since functions provide for more efficient evaluation strategies (lazy evaluation, deterministic reductions) than predicates.
Curry is a universal programming language that covers the most important operational principles developed in the area of integrated functional logic languages: residuation and narrowing. It combines in a seamless way features from functional, logic and concurrent programming. The development of Curry is an international initiative intended to provide a common platform for research, teaching and application of declarative multi-paradigm languages.
Despite widespread interest in declarative multi-paradigm programming, there are still objections to their overall performances. This is because generally multi-paradigm languages have a higher execution cost than imperative languages, requiring more processing power and memory. Therefore, optimizations towards a more efficient execution of functional logic programs are significant in daily practice. On the other hand, existing (declarative) systems are generally not adaptable to changing requirements, are difficult to use for non-experts and, often, they do not scale up well to "real" problems. In order to overcome these limitations, our group is focused on the following topics: