Curry System


PAKCS is an implementation of the multi-paradigm declarative language Curry jointly developed by the Portland State University, the Aachen University of Technology, and the University of Kiel. Although this is not a highly optimized implementation but based on a high-level compilation of Curry programs into Prolog programs, it is not a toy implementation: PAKCS has been used for a variety of applications (e.g., graphical programming environments, an object-oriented front-end for Curry, partial evaluators, database applications, HTML programming with dynamic web pages, prototyping embedded systems). The size of all current Curry applications implemented with PAKCS amounts to more than 150,000 lines (or 8 mbytes) of program code.

There is a manual (PDF) which describes the use of the system and the minor restrictions of PAKCS compared to Curry. Since this document compares only PAKCS to Curry, you may have a look at the Curry report which describes the full language.

Libraries, packages, and tools

The PAKCS distribution comes with a collection of system libraries that are useful for basic application programming. A short description of these libraries can be found here.

In addition to these system libraries, the recent distribution contains also the Curry Package Manager CPM which supports the easy installation of further libraries and tools. There are more than sixty packages available (use the list or search command of CPM to browse through the current set of packages). Some of the tools, which can be installed via CPM, are described in the PAKCS User Manual. Thus, if you install PAKCS, you have easy access to

Download and test

You can download the PAKCS distribution here. Alternatively, you can also run your Curry program using Smap, a web-based interactive environment to execute Curry programs with PAKCS (and other systems). Note that there is time limit for the execution of Curry programs and some predefined system functions (like reading/writing files) are not available due to security reasons.

Important note: The current version is almost compatible with the Curry Report Version 0.9.0. The minor restrictions are described in Section 1.2 of the PAKCS User Manual.

This might also of interest for PAKCS users:

  • Typical errors and pitfalls in programming with Curry/PAKCS
  • CIDER: a graphical programming and development environment for Curry
    (note that CIDER is no longer supported since the current distribution of PAKCS includes the tool CurryBrowser which improves CIDER in many respects)
  • COOSy: the Curry Object Observation System, a lightweight approach for debugging Curry programs by observations
  • Spicey: An ER-based Web Framework for Curry

Mirror sites

Europe (home):
USA (Portland State University):

This work has been supported in part by the DAAD/NSF grant INT-9981317, the NSF grants CCR-0110496 and CCR-0218224, and the DFG grants Ha 2457/1-2 and Ha 2457/5-1.