This book is about programming in Curry, a general-purpose declarative programming language that integrates functional with logic programming. Curry seamlessly combines the key features of functional programming (nested expressions, lazy evaluation, higher-order functions), logic programming (logical variables, partial data structures, built-in search), and concurrent programming (concurrent evaluation of constraints with synchronization on logical variables).

This book is best used as an introduction to Curry. Curry is a rigorously defined programming language. The “Report” is a still evolving, but fairly stable, document that precisely defines the language, in particular both its syntax and operational semantics. However, the report is not best suited to the beginner, rather it may be consulted in conjunction with this tutorial for the sake of a completeness that is not sought here.

There are several implementations of Curry. The examples and exercises in this book have been developed and executed using PAKCS. PAKCS is also accessible (in a restricted form) on-line via a web-based system. In this document, you find for many programs a “Browse” link which directly loads the program into this web-based system so that you can run or modify it. Alternatively, you can download the example programs and execute them on your locally installed Curry system.